美好的一天。我有一个功能:
create function get_n(search tt.pp%type)
return number
is rc number;
begin
select count(*)
into rc
from tt
where tt.pp=search;
return (rc);
end;
/
我可以得到结果
variable qwe number;
begin
select get_n('sample')
into :qwe
from dual;
end;
print qwe;
因此,它成功运作。但是按部分:我执行其他时不能执行print
(PLS-00103:遇到符号" PRINT" ......)。这真的很奇怪。
我尝试从匿名块中的函数获取结果并打印它:
declare
qwe number;
begin
select get_n('sample')
into :qwe
from dual;
dbms_output.put_line(qwe);
exception
when others
then dbms_output.put_line(sqlerrm);
end;
/
它不打印任何东西。为什么呢?
答案 0 :(得分:5)
问题是:
。以下代码应该有效:
declare
qwe number;
begin
select get_n('sample')
into qwe
from dual;
dbms_output.put_line(qwe);
exception
when others
then dbms_output.put_line(sqlerrm);
end;
/
:
表示需要在PL / SQL块内绑定而不是变量的变量。
并且在第一个块的情况下,您在PL / SQL块后丢失/
导致编译器读取print
作为PL / SQL的一部分而不是SQLplus脚本:
variable qwe number;
begin
select get_n('sample')
into :qwe
from dual;
end;
/
print qwe;