2011-10-10 31 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這是很難得的調試,這也是表明您可能想要使用不需要動態發現要使用的表或字段的不同表結構。 –