2017-10-27 9 views
0

実行時に正しいテーブルを選択する必要があるため、動的SQLで2つの変数(tmp_xとtmp_y)を割り当てる必要があります。動的SQLを使用して変数を割り当てる方法

コンパイルはOKですが、「キーワードが足りない」というランタイムエラーが発生しましたが、どうすれば修正できますか?

+0

「私の車は動作していません。どのように動作させるか教えてください。」あなたはその要求の問題と、あなたが質問した方法との類推を見ますか?どのように "働いていない"ですか?何が起こるのですか?コンパイルエラーが発生しますか?ランタイムエラー?それは実行されますが、出力が生成されないか、間違った出力が生成されますか? – mathguy

+0

@mathguyごめんなさい。私の貧しい英語については申し訳ありませんが、コンパイルはOKです。ランタイムエラーは中国語で「キーワード不足」です。翻訳についてはわかりません – Jaycee

+0

OK、コードでSQL SELECT文が生成されました。無効なSQLクエリであるようです。 「即時実行」の代わりに、文をテキストとしてエクスポートし(DBMS_OUTPUT.PUT_LINE(updateSql)を使用)、それを検査し、および/または実行しようとします。同じエラーが出ますか?詳しいヘルプのために、ここに正確な文字列 'updateSql'を投稿してください。 – mathguy

答えて

1

ので、コメントは次

この:になるための

updateSql:= 'select p.gis_x,p.gis_y into tmp_x,tmp_y from publish_' 
      ||splitCollection(indexs).city_no ||'.t_customer p 
      where p.customer_id=:1 and p.gis_x is not null and p.gis_y is not null'; 

execute immediate updateSql using splitCollection(indexs).CUSTOMER_ID; 

ニーズ:

updateSql:= 'select p.gis_x,p.gis_y from publish_' 
      ||splitCollection(indexs).city_no ||'.t_customer p 
      where p.customer_id=:1 and p.gis_x is not null and p.gis_y is not null'; 

execute immediate updateSql using splitCollection(indexs).CUSTOMER_ID RETURNING into tmp_x,tmp_y; 

差がexecute immediateで使用し、句の中にあるので行く必要があります実際のステートメントはSelectステートメントの一部ではありません。

乾杯

関連する問題