>> create procedure sp_test (new_id integer)
>> as
>> begin
>>  set generator gen_test to :new_id;
>> end
>>
>> × YA ÓÏÚÄÁÅÔÓÑ É ÒÁÂÏÔÁÅÔ, × 1.5.3 - ÎÅÔ. îï:
>> ÉÚ ÂÅËÁÐÁ ×ÏÓÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ, ÐÒÉ ÚÁÐÕÓËÅ ÎÉÞÅÇÏ ÎÅ ÄÅÌÁÅÔ, ÎÏ É ÎÅ 
>> ÒÕÇÁÅÔÓÑ
>
> îÅ ÍÏÖÅÔÔÁËÏÇÏ ÂÙÔØ. ôÁÍ blr ÓÏ×ÍÅÓÔÉÍÙÊ Ó FB ÓÏÚÄÁ£ÔÓÑ. FB 
> ÐÅÒÅËÏÍÐÉÌÉÒÏ×ÁÔØ ÎÅ ÍÏÖÅÔ, Á ÒÁÂÏÔÁÔØ ÄÏÌÖÅÎ.

ôÁË É ÅÓÔØ - Ñ ÕÖÅ ÎÁÐÉÓÁÌ. ðÒÏÂÌÅÍÁ ÂÙÌÁ × ÄÒÕÇÏÍ: ÔÅÌÏ ÐÒÏÃÅÄÕÒÙ ÎÅÍÎÏÇÏ 
ÄÌÉÎÎÅÅ:

create procedure sp_test (new_id integer)
as
declare variable id integer;
begin
  id = new_id;
  select max(id) from test where id>new_id into :id;
  set generator gen_test to :id;
end

ËÁË ÏËÁÚÁÌÏÓØ, ÅÓÌÉ × ÄÁÎÎÏÍ ÓÌÕÞÁÅ ÓÅÌÅËÔ ×ÏÚ×ÒÁÝÁÅÔ null, ÔÏ ÐÅÒÅÍÅÎÎÏÊ 
ÜÔÏ null É ÐÒÉÓ×ÁÉ×ÁÅÔÓÑ. îÅ ÕÞÅÌ, ÞÔÏ ÁÇÒÅÇÁÔÎÁÑ ÆÕÎËÃÉÑ ×ÓÅÇÄÁ ÈÏÔØ 
ÞÔÏ-ÎÉÂÕÄØ, ÄÁ ×ÏÚ×ÒÁÝÁÅÔ 



Ответить