调用 PL/SQL 函数
Posted
技术标签:
【中文标题】调用 PL/SQL 函数【英文标题】:Call a PL/SQL function 【发布时间】:2015-01-27 10:30:34 【问题描述】:我正在尝试调用我使用以下说明创建的 PL/SQL 函数:
variable rep number
execute :rep:=sal_ok_F2('MANAGER',100);
print rep;
但是我收到一条错误消息说变量rep没有被声明,“变量rep数”这行不是应该是这个变量的声明吗?
【问题讨论】:
variable rep number
定义了一个 SQL*Plus 变量。但是赋值运算符:=
只适用于PL/SQL 变量。
您是作为语句还是作为脚本运行它? (假设您使用的是 SQL Developer...)
@a_horse_with_no_name - :rep
引用可让您将其用作绑定变量,因此分配很好。 (我很确定你真的知道...)取决于客户端,但如果 variable
有效,那么它看起来像 SQL*Plus 或更可能是 SQL Developer。
假设sal_ok_F2
函数的返回值是一个可以转换为number
的SQL 类型,您的示例是sqlplus
命令的有效序列。要么您的示例与您的实际案例不同,要么您没有使用sqlplus
运行它。
我正在使用 sqlplus。嗯,也许是因为我使用的 oracle 数据库的 express 版本可能不包含所有功能。
【参考方案1】:
试试这个方法:
declare
rep number;
begin
select sal_ok_F2('MANAGER',100) into rep from dual;
dbms_output.put_line(rep);
--or
rep := sal_ok_F2('MANAGER',100);
dbms_output.put_line(rep);
end;
【讨论】:
你的脚本有效,但我必须使用我第一篇文章的方法,顺便问一下你如何用你的方法打印变量 rep 的值? @a_horse_with_no_name 确实如此!以上是关于调用 PL/SQL 函数的主要内容,如果未能解决你的问题,请参考以下文章
调用从 Hibernate 返回记录列表的 PL/SQL 函数
如何从 Javascript 函数中调用 PL/SQL 变量?
ORACLE PL/SQL:使用多个参数调用存储过程函数(DML 查询)