我想创建存储过程来获取特定表的当前id,我有很多表 所以我不想为每一个创建sp,
我正在尝试这种方式,但我失败了
create procedure
sp_get_id(mytable varchar(128)) returns(id integer)
as
begin
select gen_id(:mytable, 0) from rdb$database into :id;
suspend;
end
我想知道是否有办法将输入参数传递给gen_id,或者我必须为每个表创建不同的sp ..
提前致谢
答案 0 :(得分:5)
如果保留命名约定,以便可以从表名派生生成器名称,则可以使用类似于此的内容:
SET TERM ^;
CREATE OR ALTER PROCEDURE SP_GET_ID (
TABLE_NAME VARCHAR(128))
RETURNS (
ID INTEGER)
AS
BEGIN
EXECUTE STATEMENT 'SELECT GEN_ID(GEN_' || :TABLE_NAME || ', 0) FROM RDB$DATABASE' INTO :ID;
END^
SET TERM ;^