0

エラー コードと関連するエラー メッセージを保持する次のテーブル構造があります。

ERR_CODE    ERR_MESSAGE
CN001       Invalid Username :USERNM
CN002       Invalid Password :PWD

私の PLSQL コードでは、ユーザー名とパスワードの値を動的に置き換えたいと考えています。

EXECUTE IMMEDIATE は USING 句で置換できることを理解していますが、その場合、クエリは静的でなければなりません。

私はこれを行うことができる即時実行に似たフレーバーを探しています:

SIMILAR_EXECUTE_IMMDIATE q'{select ERR_MESSAGE from ERROR_MESSAGES where ERR_CODE = 'CN001'}' INTO l_err_msg USING l_curr_user;

または多分私はそれを2つのステップに分解することができます:

select ERR_MESSAGE into err_msg_var from ERROR_MESSAGES where ERR_CODE='CN001';

EXECUTE_IMMDIATE err_msg_var INTO l_err_msg USING l_curr_user;

基本的に、関連する手順の数を減らすか、パフォーマンスの高いクエリまたはアプローチを取得しようとしています。

前もって感謝します !

4

2 に答える 2

0

SELECT を介してテーブルから ERR_MESSAGE を取得し、それに userName または PWD を追加するだけです。以下はスニペットです。

select ERR_MESSAGE into err_msg_var from ERROR_MESSAGES where ERR_CODE='CN001';
dbms_output.put_line(err_msg_var||l_curr_user)

dbms_outputこれを関数として定義したい場合は、値を返すことができます。

于 2014-02-18T06:03:47.380 に答える