首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >变量名称是从DB中检索的

变量名称是从DB中检索的
EN

Stack Overflow用户
提问于 2012-06-17 10:45:17
回答 1查看 221关注 0票数 0

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

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

例如,我需要插入名为L_sEmpSalary的变量的值。

问题是,我正在从设置表的一个名为L_sVarName的变量中获取变量名。现在,变量L_sVarName包含了变量L_sEmpSalary,我想把它的值插入到DB中

因此,我需要获取存储在变量L_sVarName中的变量L_sEmpSalary的值。

以下是示例代码:

代码语言:javascript
复制
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,但是没有成功,你知道吗?

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2012-06-17 23:22:16

我想我理解你的问题,你不能在select子句中使用bind variable

您可以使用拼接:

代码语言:javascript
复制
 execute immediate 'select ' || l_svarname || ' from dual' into l_svarvalue;

当然,在查询的表的L_sEmpSalary列中必须有值500 (我假设在实际代码中它不是dual)

例如:

代码语言:javascript
复制
Sql_Statment := 'with t as (select 500 L_sEmpSalary from dual) ' ||
                'select l_sVarName || ' from t' into l_sVarValue;

不过,我可能还是不太明白你到底想做什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11068555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档