请举例说明如何在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”是循环变量
答案 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^