gpt4 book ai didi

oracle - EXECUTE识别存储过程,CALL不能识别

转载 作者:行者123 更新时间:2023-12-04 22:06:31 25 4
gpt4 key购买 nike

当我尝试使用EXECUTE运行存储过程时,proc运行正常。当我使用CALL时,我得到"ORA-06576: not a valid function or procedure name"。我直接通过蟾蜍连接。为什么我不能使用通话?

我已经尝试过这两个电话:

CALL(BPMS_OWNER.DAILY_PARTITION_NOROTATE('MIP_TEST',5,5,'MIP_TEST_',5,FALSE,TRUE));
CALL BPMS_OWNER.DAILY_PARTITION_NOROTATE('MIP_TEST',5,5,'MIP_TEST_',5,FALSE,TRUE);

我需要使用CALL的原因是我们的平台在将SQL发送到Oracle之前先对其进行语法分析,而无论出于何种原因,SQL都不支持EXECUTE。

最佳答案

仅仅是因为 call 要求您添加括号,例如call my_proc()
如果我进行一些测试:

SQL>
SQL> create or replace procedure test is
2 begin
3 dbms_output.put_line('hi');
4 end;
5 /

Procedure created.

并以几种不同的方式运行,您将看到
SQL> exec test
hi

PL/SQL procedure successfully completed.

SQL> call test;
call test
*
ERROR at line 1:
ORA-06576: not a valid function or procedure name


SQL> call test();
hi

Call completed.

为什么需要使用 callexecexecutebegin ... end不够吗?

根据您的更新,问题是 bool 值, call似乎不支持。创建另一个小程序
SQL> create or replace procedure test (Pbool boolean ) is
2 begin
3 if Pbool then
4 dbms_output.put_line('true');
5 else
6 dbms_output.put_line('false');
7 end if;
8 end;
9 /

Procedure created.

SQL> show error
No errors.

并运行它证明了这一点
SQL> call test(true);
call test(true)
*
ERROR at line 1:
ORA-06576: not a valid function or procedure name

我不完全理解您为什么不能使用 execexecute的原因,但是假设它们都无法使用,为什么不只使用传统的匿名PL/SQL块呢?
SQL> begin
2 test(true);
3 end;
4 /
true

PL/SQL procedure successfully completed.

关于oracle - EXECUTE识别存储过程,CALL不能识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12040261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com