如何在Firebird存储过程或执行块中引用带变量的字段名称

时间:2011-10-10 21:12:21

标签: sql firebird

请举例说明如何在Firebird存储过程中引用带变量的字段名称或execute block

像这样的伪SQL:

Insert into tab1 (1, f1, f2, f3)
    select 1, tab2.f+var_loop, tab2.f+var_loop, tab2.f+var_loop
    from tab2
    where .....

其中“f”是字段名称的第一个首字母,“var_loop”是循环变量

1 个答案:

答案 0 :(得分:1)

我仍然不太清楚你想要实现什么,但在PSQL中还有EXECUTE STATEMENT功能可用,它可能适合你的需要 - 它允许你建立一个字符串然后作为DSQL执行它声明...假设您的示例中的var_loop是整数,您的代码可能类似于

CREATE PROCEDURE Foo(var_loop INTEGER)
AS
DECLARE Stmnt VARCHAR(1024);
BEGIN
  Stmnt = 'Insert into tab1 (1, f1, f2, f3)'||
          'select 1, tab2.f'|| CAST(var_loop AS VARCHAR(10)) ||
          ', tab2.f'|| CAST(var_loop AS VARCHAR(10)) ||
          ', tab2.f'|| CAST(var_loop AS VARCHAR(10)) ||
          'from tab2 where(...)';
  EXECUTE STATEMENT Stmnt;
END^