0

Oracle DB 10g があり、アプリケーション関数と各関数変数を含むセットアップ テーブルを作成しました。

実行時に変数値をデバッグ テーブルに挿入する必要があるため、デバッグ テーブルに挿入する必要がある変数名を最初のテーブルで定義しています。

たとえば、という変数の値を挿入する必要がありますL_sEmpSalary

問題は、たとえばと呼ばれる変数のセットアップ テーブルから変数名を取得していることですL_sVarName。変数には、その値をDBに挿入したい変数L_sVarNameが含まれていますL_sEmpSalary

L_sEmpSalaryそのため、 variableに格納されている variableの値を取得する必要がありますL_sVarName

以下はサンプルコードです:

declare
   L_sEmpSalary Number :=500; 
   Sql_Statment Varchar2(500); 
Begin 
   For Rec In GetVars Loop 
      L_sVarName:=Rec.Var_Name; 
      /* L_sVarname is Holding now variable 'L_sEmpSalary' which i need to get it's value which is 500*/ 
      Sql_Statment:= ' select :var from dual '; 
      EXECUTE IMMEDIATE Sql_Statment into L_sVarValue using L_sVarName; 
      DBMS_OUTPUT.PUT_LINE ( 'Var value = '||L_sVarValue); 
   End Loop;
end;

DBMS_SQL を試しましたが、うまくいきませんでした。アイデアはありますか?

前もって感謝します

4

1 に答える 1

0

私はあなたの問題を理解していると思います.selectbind variable句では使用できません。
連結を使用できます:

 execute immediate 'select ' || l_svarname || ' from dual' into l_svarvalue;

もちろん、クエリするテーブルの L_sEmpSalary 列に値 500 を設定する必要があります (実際のコードではデュアルではないと仮定します)。

例えば:

Sql_Statment := 'with t as (select 500 L_sEmpSalary from dual) ' ||
                'select l_sVarName || ' from t' into l_sVarValue;

何をしようとしているのか、まだよくわからないかもしれませんが…

于 2012-06-17T15:22:15.543 に答える