2011-10-10 42 views
1

请给我一个例子如何在火鸟存储过程变量或execute block如何火鸟存储过程或执行块变量参考firled名

事情是这样的伪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

目前还不太清楚你想达到什么目的,但在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^ 
+0

非常感谢我的朋友,这是我所期待的,虽然这将是很难进行调试本PROC – Wel

+0

@Welliam这是很难得的调试,这也是表明您可能想要使用不需要动态发现要使用的表或字段的不同表结构。 –