Oracle DB:如何将函数结果存储到变量内部程序中

时间:2016-12-18 17:58:31

标签: oracle plsql

美好的一天。我有一个功能:

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;
/

它不打印任何东西。为什么呢?

1 个答案:

答案 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;