Subject RE: [firebird-support] Gen_ID as part of calculation (was: Use of BEGIN/END in sql scripts)
Author Svein Erling Tysvær
>For a number of reasons, I do not want to use a stored procedure for this.
>What I need to do is a sort of generator on steroids, with a very high power function result. >Thus my code ought to be something like SELECT GEN_ID(GEN_MY_GEN)+POWER(2,32)*MYFIELD
>FROM....
>
>I am at all not sure I can call gen_id that way though, thus probably my best bet is to use a >begin/end pair and perform the calculation outside the select. Do you know if I can do that? >Otherwise, what is the best way to do it? Can I call gen_id in a select?
>
>Thanks

Sure you can call gen_id in a select, Andrea. Though you cannot call GEN_ID(GEN_MY_GEN), you have to call GEN_ID(GEN_MY_GEN, 1). Well, it doesn't have to be 1, there are scenarios where you only want to know its current value and then you would use 0 (and for other reasons you may desire a different value).

I've never tried using a generator as part of a calculation (and know nothing about Firebird internals), but don't see why it shouldn't work and think SELECT GEN_ID(GEN_MY_GEN,1)+POWER(2,32)*MYFIELD FROM ... could be worth a try.

HTH,
Set