0

sStorecode が 00020 だとしましょう

以下は、select ステートメントを実行して、テーブル STOREINFO 内の別のデータベース STORE でアカウント ID を取得するだけです。何らかの理由 (無効な SQL ステートメント)、誰かが助けてくれますか?

EXECUTE IMMEDIATE 'select AccountID from STOREINFO@STORE.p'||substr(sSTORECODE,3,3)||'081';

前もって感謝します!

4

2 に答える 2

2

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_tabPL/SQLコレクション変数です。

または、カーソルを操作する場合は、次のように記述できます。

 OPEN account_id_cv FOR 'select AccountID from STOREINFO@STORE.p'||substr(sSTORECODE,3,3)||'081';

account_id_cvREFCURSOR変数です。

于 2013-01-17T22:38:15.713 に答える
0

代わりに、次のようにする必要があります。

'select AccountID from STORE.STOREINFO WHERE sStorecode = ''p'||substr(sSTORECODE,3,3)||'081''';
于 2013-01-17T22:31:05.830 に答える