Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plsql 使用变量选择列值_Plsql_Oracle11g_Execute - Fatal编程技术网

Plsql 使用变量选择列值

Plsql 使用变量选择列值,plsql,oracle11g,execute,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 col

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

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的数据;
有人能帮我吗?

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

因为colname在这里是一个变量,所以应该将它连接到select字符串

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

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

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

'select distinct('||colname||') 
 into colval 
 from HR.countries 
 where '||colname ||'= AR';
如上述答案所述。我还看到您正在以HR.countries的形式访问表countries,因此我感觉您最好以类似的方式访问查询中的列名,如

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