【问题标题】:select column value with variable选择带有变量的列值
【发布时间】:2013-12-16 09:50:41
【问题描述】:

我想从表中选择一些数据。 为此,我编写了这个程序:

create or replace procedure find_and_insert
  colname varchar2(4000);
  var varchar2(4000);
  colval varchar2(4000);
begin
  colname := 'COUNTRY_ID';
  var := 'select distinct(colname) into colval from HR.countries where colname = '||'AR'||';';
  execute immediate var;  
end;

但它不能工作。它将 'COUNTRY_ID' 返回到 colval ,而不是 COUNTRY_ID 的数据; 谁能帮帮我?

【问题讨论】:

    标签: plsql oracle11g execute


    【解决方案1】:

    我不认为程序执行成功。你会得到colname : invalid identifier 错误。

    由于 colname 在这里是一个变量,你应该将它连接到你的选择字符串。

    var := 'select distinct('||colname||') 
            into colval 
            from HR.countries 
            where '||colname ||'= AR';
    

    【讨论】:

      【解决方案2】:

      在这里,使用语句 colname := 'COUNTRY_ID';

      您只是将字符串“COUNTRY_ID”分配给 varchar2 类型变量 colname。简而言之,该程序为您提供了您所写内容的正确输出。我建议你写成:

      'select distinct('||colname||') 
       into colval 
       from HR.countries 
       where '||colname ||'= AR';
      

      如上述答案中所述。我还看到您正在以 HR.countries 的身份访问表国家,所以我觉得您最好以类似的方式访问查询中的列名,如

      'select distinct(HR.countries.'||colname||') 
       into colval 
       from HR.countries 
       where HR.countries.'||colname ||'= AR';
      

      【讨论】:

        猜你喜欢
        • 2011-06-21
        • 1970-01-01
        • 2015-09-24
        • 2020-04-17
        • 2011-03-11
        • 2023-02-24
        • 1970-01-01
        • 2012-07-08
        相关资源
        最近更新 更多