RDB$SET_CONTEXT()
DSQL, PSQL
RDB$SET_CONTEXT('<namespace>', 'varname', {<value> | NULL}) <namespace> ::= USER_SESSION | USER_TRANSACTION
Paramètre | Description |
---|---|
namespace |
Namespace. |
varname |
Nom de la variable, sensible à la casse. Longueur maximale de 80 octets. |
value |
Données de tout type, à condition qu’elles puissent être converties en CHARACTER SET NONE de type VARCHAR(255). |
INTEGER
La fonction RDB$SET_CONTEXT
crée, définit ou efface une variable dans l’un des espaces de noms utilisés par l’utilisateur : USER_SESSION
ou USER_TRANSACTION
.
La fonction renvoie 1 si la variable existait déjà avant l’appel et 0 si ce n’est pas le cas. Pour supprimer une variable, mettez-la à NULL
. Si l’espace de noms donné n’existe pas, la fonction renverra une erreur. L’espace de noms et le nom de la variable sont sensibles à la casse, doivent être des chaînes de caractères non vides, et entourées de guillemets.
Note
|
|
RDB$SET_CONTEXT
SELECT RDB$SET_CONTEXT ('USER_SESSION', 'DEBUGL', 3)
FROM RDB$DATABASE;
-- la syntaxe suivante est disponible dans PSQL
RDB$SET_CONTEXT('USER_SESSION', 'RECORDSFOUND', RECCOUNTER);
SELECT RDB$SET_CONTEXT ('USER_TRANSACTION', 'SAVEPOINTS', 'YES')
FROM RDB$DATABASE;
SET TERM ^;
CREATE PROCEDURE set_context(User_ID VARCHAR(40),
Trn_ID INT) AS
BEGIN
RDB$SET_CONTEXT('USER_TRANSACTION', 'Trn_ID', Trn_ID);
RDB$SET_CONTEXT('USER_TRANSACTION', 'User_ID', User_ID);
END^
SET TERM ;^
CREATE TABLE journal (
jrn_id INTEGER NOT NULL PRIMARY KEY,
jrn_lastuser VARCHAR(40),
jrn_lastaddr VARCHAR(255),
jrn_lasttran INTEGER
);
SET TERM ^;
CREATE TRIGGER UI_JOURNAL
FOR JOURNAL BEFORE INSERT OR UPDATE
AS
BEGIN
new.jrn_lastuser = RDB$GET_CONTEXT('USER_TRANSACTION',
'User_ID');
new.jrn_lastaddr = RDB$GET_CONTEXT('SYSTEM',
'CLIENT_ADDRESS');
new.jrn_lasttran = RDB$GET_CONTEXT('USER_TRANSACTION',
'Trn_ID');
END^
SET TERM ;^
EXECUTE PROCEDURE set_context('skidder', 1);
INSERT INTO journal(jrn_id) VALUES(0);
COMMIT;