请举例说明如何在FireBird存储过程或执行块中引用带变量的字段名称
@H_502_2@像这样的伪sql:
Insert into tab1 (1,f1,f2,f3) select 1,tab2.f+var_loop,tab2.f+var_loop from tab2 where .....@H_502_2@其中“f”是字段名称的第一个首字母,“var_loop”是循环变量 @H_502_2@谢谢
解决方法
我仍然不太清楚你想要实现什么,但在Psql中还有
EXECUTE STATEMENT功能可用,它可能适合你的需要 – 它允许你建立一个字符串然后作为Dsql语句执行…假设var_loop在你的例子中是整数,你的代码可能是这样的
CREATE PROCEDURE Foo(var_loop INTEGER) AS DECLARE Stmnt VARCHAR(1024); BEGIN Stmnt = 'Insert into tab1 (1,f3)'|| 'select 1,tab2.f'|| CAST(var_loop AS VARCHAR(10)) || ',tab2.f'|| CAST(var_loop AS VARCHAR(10)) || 'from tab2 where(...)'; EXECUTE STATEMENT Stmnt; END^