【问题标题】:How to call a user defined function using the 'CALL' statement?如何使用“CALL”语句调用用户定义的函数?
【发布时间】:2023-03-29 03:08:01
【问题描述】:

我正在阅读 CALL 语句的 Oracle 文档。那里指出,CALL 语句可用于通过使用 INTO(不是包内的函数)调用用户定义的函数。我尝试了很多组合,但似乎无法找到正确的组合。有人可以给我一个如何做到这一点的例子吗?谢谢。

编辑:

我已经在 SQL Developer 中尝试了下面的示例,但出现错误。

variable x number; 
call f(10) into :x;

我在第 2 行遇到了一个问题,并且出现了错误:

SQL Error: ORA-01008: not all variables bound<br>
01008. 00000 -  "not all variables bound"

【问题讨论】:

  • 请发表您的尝试和遇到的问题,以便人们可以帮助您编辑您的代码
  • SELECT function_name(paramters) 这应该可以工作。
  • 我有一个函数执行 DML 的场景,所以我正在寻找其他方法来执行它。

标签: sql oracle function call


【解决方案1】:

来自Oracle documentation

VARIABLE x VARCHAR2(25);

CALL warehouse_typ(456, 'Warehouse 456', 2236).ret_name()
   INTO :x;

另一个例子:

create function f(n number) return number is
begin
    return n * 2;
end;

SQL> variable x number;
SQL> call f(10) into :x;

Call completed.

SQL> print x;

         X
----------
        20

【讨论】:

  • 值得注意的是,如果一个函数没有参数来成功调用,则需要空括号:call f1() into :var
  • 我正在尝试在 SQL 开发人员中运行您的示例,但无济于事。我收到此错误:SQL 错误:ORA-01008:并非所有变量都绑定 01008。00000 - 运行变量 x 编号时“并非所有变量都绑定”;将 f(10) 调用到 :x 中;它还在第 2 行显示语法错误。谢谢!
猜你喜欢
  • 2017-02-20
  • 2015-01-25
  • 2020-10-13
  • 1970-01-01
  • 2011-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-21
相关资源
最近更新 更多