0

この手順は正しく機能していません。

create or replace procedure bank_search_sp
(
p_tablename in varchar2,
p_searchname in varchar2,
p_bankcode out varchar2,
p_bankname out varchar2,
p_dist_code out number
)
as
v_tem varchar2(5000);
begin
v_tem :='select bankcode,bankname,dist_code from ' || UPPER (p_tablename) || '
where bankname like '''|| p_searchname||'';
execute immediate v_tem into p_bankcode,p_bankname,p_dist_code using p_searchname ;
commit;
end bank_search_sp;

プロシージャが作成されていますが、実行されたときに実際に何が起こるかわかりません。これは表示されるエラーです。

ORA-01756:引用符列は正しく終了していません
ORA-06512:「PENSIONS.BANK_SEARCH_SP」の14行目
ORA-06512:1行目
4

1 に答える 1

3

この行には末尾のカンマがありません:

v_tem :='select bankcode,bankname,dist_code from ' || UPPER (p_tablename) || '
where bankname like '''|| p_searchname||'''';

文字列フラグメントの末尾にある 4 つのコンマに注目してください。最初は文字列を開き、最後は文字列を閉じ、真ん中の 2 つは検索式の終了コンマとなる単一のコンマを挿入します)。

UPPER()関数は必要ありません。Oracle は、オブジェクト名の大文字と小文字を区別しません。

同じ構造を持つ複数のテーブルを持つことが最善の解決策であるかどうかはわかりません。銀行間の違いを示すインデックス付きの列を持つテーブルを 1 つだけ持つほうがよいのではないでしょうか。

于 2012-02-06T11:11:10.060 に答える