2011-10-10 72 views
0

有沒有辦法在Firebird中引用帶有變量值的字段名稱? 比如我想拍這樣的SQL:有沒有辦法在Firebird中引用帶有變量的字段名稱

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

具有連續編號氣味的列就像一個非常糟糕的數據庫設計。 Btw:SELECT列的列表不需要放在括號中。 –

+0

這是一個讓人理解的例子。下一次想想你的頭不是用你的鼻子想要的! – Wel

+0

前綴和數字**的連接將**產生像「some_name_1」,「some_name_2」,「some_name_3」這樣的列名稱。像這樣的設計聞起來好像沒有正常化。如果這是*不是*你有什麼,那麼你應該提供一個更好的(即有意義的)示例 –

回答

0

不,這不支持。我試圖使用EXECUTE BLOCK來實現類似的效果,但是您可以立即在客戶端上構建正確的SQL語句,這樣會更容易...

+0

我只需要在服務器端寫它 – Wel

+0

定義'服務器端'。無論如何,如果你想這樣做,你需要*執行塊。 –

+0

需要示例請http://stackoverflow.com/questions/7718748/how-to-reference-firled-names-with-variable-in-firebird-stored-proceder-or-execut – Wel

0

要做到這一點,你必須編寫應用程序代碼以在準備查詢之前構建SQL。

在SQL中,在準備查詢時,必須修復列的名稱和數量。列名稱不能基於直到運行時才評估的表達式。就我所知,這在標準SQL和每個品牌的RDBMS中都是如此。

另外,您不能在SELECT子句中的列列表周圍使用括號。

+0

你錯了SQL服務器有這個功能 – Wel

+0

@Welliam,你可以提供一個鏈接到文檔或者是一個用查詢執行時間來評估列名的SQL編寫的例子嗎?我知道在準備時間之前可以使用動態SQL來構建查詢。 –

+0

是的,它是動態sql http://www.sommarskog.se/dynamic_sql.html – Wel

相關問題