我已经声明了一个函数,它返回一些字符串
function(varchar2) return varchar2;
我希望从光标内部调用此函数,如
open p-cursor for select * from employee where emp_name = function(ssn).
但它会引发一些错误。
光标中使用的查询在单独执行时工作正常。
答案 0 :(得分:1)
当你说你已经“声明”某个功能时,你的意思是这样吗?
declare
function f (p varchar2) return varchar2
is
begin
...
end;
begin
open p_cursor for select * from employee where emp_name = function(ssn);
...
end;
您不能在SQL中使用类似的功能。您必须在数据库中创建该函数,以便可以在PL / SQL程序之外使用它 - 例如:
create or replace function f (p varchar2) return varchar2
is
begin
...
end;
或者如果您正在创建一个包,那么您可以像这样公开包装函数:
create or replace package pkg is
function f (p varchar2) return varchar2;
...
end;
然后它可以在其他代码中使用:
open p_cursor for select * from employee where emp_name = pkg.f(ssn);
答案 1 :(得分:0)
我很确定你不能在where子句中使用组函数。但是这个函数(ssn)不是一个组函数也不能在这里使用。
您可以将其用作子查询,达到目的。
为员工选择* *打开p-cursor,其中emp_name =(从dual选择package_name.function_name(ssn));