declare
res varchar2(200);
tabnam varchar2(200) := 'DWH_gate.T$TERMINAL';
colnum int := 3;
colnam varchar2 (32) := 'ID_AGENT';
begin
EXECUTE IMMEDIATE 'select '||colnam||' from DWH_gate.T$TERMINAL' into res;
dbms_output.put_line (res);
end;
此查询引发错误。我知道错误是显示的不是一行,而是几行,而且很可能需要一个光标。但是无论我尝试了多少,错误仍然出现。
或者有一个稍微修改的查询:
declare
res varchar2(200);
tabnam varchar2(200) := 'DWH_gate.T$TERMINAL';
colnum int := 3;
colnam varchar2 (32) := 'ID_AGENT';
begin
res := 'select '||colnam||' from DWH_gate.T$TERMINAL';
EXECUTE IMMEDIATE res;
dbms_output.put_line (res);
end;
但它显示简单select ID_AGENT from DWH_gate.T$TERMINAL。
如何获取查询结果?
让我们看看错误说明了什么:
“你想拿一个记录,结果却有很多”
或者一个生活的例子,你不能把所有想去的20个人都放在一辆车里,车里只有五个座位。在生活中,这通常会奏效,但在上面的例子中,它不会。
有必要提供将有很多记录,或者换句话说 - 将它们放在一个集合中。例如(在db<>fiddle上):