2012-04-27 34 views
1

我有一個表稱爲SOURCE_TAG,我想插入數據,所有的插入語句將只在其中一列不同(此列在表的主鍵ID叫SOURCE_LU)。但是,要獲得專欄的ID,我還應該做一些工作。環路和陣列中的SQL

下面的列表中包含的stringKeys列表 因此,首先(在SOURCE_LU列),我應該做一些這樣想用Oracle SQL

stringKeys= {"foo","bar","foobar","barfoo",...,"etc"} 
for(each s in StringKeys) { 

SELECT SOURCE_LU where stringKeys=s and Store the id in a list (lets say idList) 

} 

以下僞代碼添加到列表後,的ID插入每個ID到SOURCE_TAG與其他類似的數據爲每行

for (each id in listId){ 
    INSERT INTO SOURCE_TAG values (x,y,id) 

} 

對不起,我是一個java小傢伙,幾乎沒有SQL知識。那麼應該如何使用數組,並在Oracle SQL中循環?解決方案越簡單越好。謝謝。

回答

0

SQL本身沒有循環,但是Oracle有一個可以使用的稱爲PL/SQL的過程語言。它有循環,條件,變量和其他你可能習慣的東西。

但是,我認爲您正在嘗試完成的操作可以在常規SQL中完成。你要知道,我還沒有使用Oracle安裝在年沒有獲得一個權利,但在PostgreSQL裏,你可以這樣做:

INSERT INTO SOURCE_TAG 
(YEAR_ID,SOURCE_TAG_LU_ID,PRIORITY_ORDER,STATUS_EN,SOURCE_LU_ID) 
select 4 as year_id, 2 as source_tag, 1000 as priority_order, 'ACTIVE' as status_en, id 
from source_lu 
where stringkeys in ('foo', 'bar', ...) 
group by year_id, source_tag, priority_order, status_en, id; 

這有可能是group by id足夠的最後一行。

+0

我無權創建表格。 – WowBow 2012-04-27 20:07:42

+0

我已經改變了不需要的答案。正如我所說,我現在無法訪問Oracle安裝。如果你告訴我'x'和'y'來自哪裏(它們是常數,計算還是基於其他數據?),我可以給你一個更簡單的例子,你可以很容易地測試。 – 2012-04-27 20:11:30

+0

謝謝。我正在嘗試這一個。同時你可以給出完整的一個。我會讓你知道它是否有效。 – WowBow 2012-04-27 20:15:11