2013-10-30 61 views
2

我想创建存储过程来获取特定的表我有很多表 所以我不希望为每一个创建SP的电流id,火鸟通输入参数GEN_ID功能

我想这种方式,但我不事先

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 ..

感谢

回答

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 ;^ 
+0

TOndrej工作般的魅力感谢的 – SStev

+0

欢迎,乐意帮助 –

+0

,但我想你忘记在末尾添加“挂起” – SStev