调用 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 函数的主要内容,如果未能解决你的问题,请参考以下文章

pl/sql编程基础

调用从 Hibernate 返回记录列表的 PL/SQL 函数

如何从 Javascript 函数中调用 PL/SQL 变量?

ORACLE PL/SQL:使用多个参数调用存储过程函数(DML 查询)

在 ORACLE 的 select 语句中从 PL/SQL 调用函数

是否可以从 jdbc 调用 pl/sql 函数并按名称注册返回值?