恢复ORA-06576:通过dbeaver数据库工具不是简单函数调用的有效函数或过程名称
我见过很多帖子,但它们不包括我所经历的情况。
我试图通过dbeaver对Oracle SQL执行一个简单的函数调用:
根据通过dbeaver获得的右键调用函数,函数语法如下:
CALL OUR_DB.GET_YEAR_FROM_DATE(:INPUT_DATE);更具体地说:
CALL OUR_DB.GET_YEAR_FROM_DATE('01/02/2024');但是,我得到以下错误: ORA-06576:不是一个有效的函数或过程名。
该函数似乎编译正确。
我还试图创建自己的函数(可能有语法错误),因此这可能是一个后续问题。
但是,上述功能在我们的数据库中是预先存在的,应该能够正常工作.假设这是真的,人们怎么称呼它从海狸?
我正在使用: dbeaver 21.3
此外,ORACLE从SELECT * from $version是: Oracle数据库19c标准版2发行版19.0.0.0.0 -生产
值得注意的是,我使用了Oracle SQL Developer版本4.1.4.21,有一个非常类似的错误,可能是更详细的错误消息:
CALL OUR_DB.GET_YEAR_FROM_DATE('01/02/2024');
Error report -
SQL Error: ORA-06576: not a valid function or procedure name
06576. 00000 - "not a valid function or procedure name"
*Cause: Could not find a function (if an INTO clause was present) or
a procedure (if the statement did not have an INTO clause) to
call.
*Action: Change the statement to invoke a function or procedure这似乎表明问题并不是由工具造成的,而是底层数据库造成的。
如果语法被认为是有效的,那么它是否只是权限问题?
发布于 2021-12-02 22:24:34
功能和程序之间有很大的区别。
这两个都得到参数,但只函数returns一个值。
因此,函数基本上可以在select语句中调用,也可以在赋值语句中的PL/SQL块中调用。见下面的例子。
只有当你这样做的时候,才能简单地调用一个过程。
几种元素信息的功能、程序及其区别
what-is-the-difference-between-function-and-procedure-in-pl-sql
functions-vs-procedures-in-oracle
示例
create function hello(par varchar2) return varchar2 as
begin
return ('world ' || par);
end;
/
-- wrong usage of function
CALL hello('hello')
SQL Error [6576] [65000]: ORA-06576: not a valid function or procedure name
-- legal use of function in SELECT
select hello('hello') from dual;
world hello
-- or in PL/SQL block
-- use Ctrl+Shift+O for SET serveroutput ON;
DECLARE
v_result varchar(100);
BEGIN
v_result := hello('helo');
dbms_output.put_line(v_result);
END;https://stackoverflow.com/questions/70206786
复制相似问题