sStorecode が 00020 だとしましょう
以下は、select ステートメントを実行して、テーブル STOREINFO 内の別のデータベース STORE でアカウント ID を取得するだけです。何らかの理由 (無効な SQL ステートメント)、誰かが助けてくれますか?
EXECUTE IMMEDIATE 'select AccountID from STOREINFO@STORE.p'||substr(sSTORECODE,3,3)||'081';
前もって感謝します!
EXECUTEIMMEDIATEはPL/SQLコマンドです。PL / SQLでは、SELECT文の結果はどこかに行く必要があります。しかし、それはあなたの声明であり、あなたはそれがどこに行くべきかを指定しません。
したがって、単一の行を期待する場合は、次のように書くことができます。
EXECUTE IMMEDIATE 'select AccountID from STOREINFO@STORE.p'||substr(sSTORECODE,3,3)||'081'
INTO l_account_id;
l_account_id
ローカルのPL/SQL変数です。
複数の行が予想される場合は、
EXECUTE IMMEDATE ... BULK COLLECT INTO l_account_tab;
l_account_tab
PL/SQLコレクション変数です。
または、カーソルを操作する場合は、次のように記述できます。
OPEN account_id_cv FOR 'select AccountID from STOREINFO@STORE.p'||substr(sSTORECODE,3,3)||'081';
account_id_cv
REFCURSOR変数です。
代わりに、次のようにする必要があります。
'select AccountID from STORE.STOREINFO WHERE sStorecode = ''p'||substr(sSTORECODE,3,3)||'081''';