2012-01-16 34 views
0

我想拋出一些想法。我正在編寫一個程序來生成插入/更新語句,並且我希望插入/更新的表來自查詢結果。因此,像(請原諒的語法):在Oracle中爲插入/更新語句選擇表?

INSERT INTO (SELECT TBL_NAME FROM MYTABLES WHERE A=B) VALUES ('A', 'B', 'C'); 

我不得不這樣做在Oracle中,但我不是太熟悉他們的聲明語句或語法。我猜測最好的方法是聲明一個變量,這是SELECT的結果,但是我可以使用該變量作爲INSERT的表名嗎?

我也想保留SQL中的代碼。

感謝您的任何想法。

+0

我不明白你想要做什麼。 'insert'語句不會獲取任何行,它會插入行。 – 2012-01-16 19:01:14

+2

他想將這些值插入到他從子查詢中確定的名稱中。 – bhamby

回答

4

我想你可能想看看Dynamic SQL,你可能會在那裏找到你的答案(或者至少一個體面的開始路徑)。

+0

是的,動態SQL對此是必要的。確定表名的查詢需要首先作爲普通的內聯查詢來執行,然後插入語句需要被構建爲一個字符串,其中包含從第一個查詢中獲取的表名。 –

0

怎麼是這樣的:

SELECT 'INSERT INTO ' || TBL_NAME || ' VALUES (''A'', ''B'', ''C'');' cmd 
FROM MYTABLES WHERE A=B 
; 

執行這個選擇,然後運行選擇的結果(這是INSERT語句)。 不要忘記「提交」。

問候, 羅傑 所有觀點都是我的......