用变量选择列值

时间:2013-11-30 09:30:37

标签: plsql oracle11g execute

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

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的数据; 任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

我不认为该过程成功执行。您将收到colname : invalid identifier错误。

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

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

答案 1 :(得分:0)

这里,使用语句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';