giordano
giordano

Reputation: 3152

Firebird: Using global variable

I would like to assign a value to a variable which is used in an sql code in firebird. The MySQL-Code would be:

SET @x = 1;
SELECT @x;

What is the correspondent Firebird-Code?

Thanks for help.

Upvotes: 3

Views: 3047

Answers (2)

yonojoy
yonojoy

Reputation: 5566

To define a user-defined session-specific variable in Firebird you can use rdb$set_context.

The correspondent Firbird-code for your MySql-example would be:

select rdb$set_context('USER_SESSION', 'x', 1) from rdb$database
select rdb$get_context('USER_SESSION', 'x') from rdb$database

Notes:

1.) Be aware that variable names are case-sensitive.

2.) Internally variable values are stored with datatype VARCHAR(255) and thus casted to VARCHAR(255)!!

3.) The maximum number of variables is 1000.

4.) You don't need to refer to rdb$database:

select rdb$get_context('USER_SESSION', 'x') from some_table_name

would work as well.

Upvotes: 5

p.s.w.g
p.s.w.g

Reputation: 149030

I'm no expert in Firebird, but I believe it would be something like this...

set term ^ ;

EXECUTE BLOCK
AS
DECLARE VARIABLE x int;
BEGIN
  x = 1; 
  --do whatever you want with x, there's no such thing 
  --as to select the variable value to print it
END
^

set term ; ^

Upvotes: 3

Related Questions