0

我有 Oracle DB 10g,我创建了一个设置表,其中包含我的应用程序函数和每个函数变量。

我需要在运行时将变量值插入到调试表中,因此我在第一个表中定义了我需要将它们插入调试表中的变量名称。

例如,我需要插入名为L_sEmpSalary.

问题是我正在从名为 example 的变量中的设置表中获取变量名L_sVarName。该变量L_sVarName现在包括L_sEmpSalary我想在数据库中插入它的值的变量

所以我需要获取一个L_sEmpSalary存储在 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

我想我理解你的问题,你不能bind variable在 select 子句中使用。
您可以使用连接:

 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 回答