我已经声明了一个返回一些字符串的函数
function(varchar2) return varchar2;
我希望从游标内部调用此函数,例如
open p-cursor for select * from employee where emp_name = function(ssn).
但它会引发一些错误。
游标中使用的查询在单独执行时工作正常。
我已经声明了一个返回一些字符串的函数
function(varchar2) return varchar2;
我希望从游标内部调用此函数,例如
open p-cursor for select * from employee where emp_name = function(ssn).
但它会引发一些错误。
游标中使用的查询在单独执行时工作正常。
当你说你已经“声明”了一个函数时,你的意思是这样的吗?
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);
我很确定您不能在 where 子句中使用组函数。但是这个函数(ssn)不是一个组函数,也不能在这里使用。
您可以将其用作子查询,达到目的。
open p-cursor for select * from employee where emp_name = (select package_name.function_name(ssn) from dual);