1

SOURCE_TAGというテーブルがあり、すべての挿入ステートメントが列の 1 つだけで異なるデータを挿入したい (この列は、SOURCE_LUというテーブルの主キー ID です)。ただし、列の ID を取得するには、いくつかの作業も行う必要があります。

次のリストには、stringKeys ( SOURCE_LU の列)のリストが含まれています

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)

}

申し訳ありませんが、私は SQL の知識がほとんどない Java の専門家です。では、Oracle SQL で配列とループをどのように使用すればよいのでしょうか? 解決策は単純であるほどよい。ありがとうございました。

4

1 に答える 1

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最後の行で十分な可能性があります。

于 2012-04-27T20:06:24.403 に答える