如何调用plsql程序

Dan*_*ffe 2 oracle plsql procedure

我创建了一个程序如下

 create or replace procedure "GETCUSTNAMEZZz"
(cust_identifier1 IN NVARCHAR2(10))
is
begin
DBMS_OUTPUT.PUT_LINE (FNAME || ' ' || LNAME FROM customer WHERE  cust_id=cust_identifier1)
end;
Run Code Online (Sandbox Code Playgroud)

然后我尝试调用该过程

BEGIN

GETCUSTNAMEZZz('C2')  ;  


END;
Run Code Online (Sandbox Code Playgroud)

这个sql给出了一个错误,标识符'GETCUSTNAMEZZZ'必须声明为ORA-06550:第3行,第5列:PL/SQL:语句被忽略"

这是我创建的确切过程,参数是正确的.

我究竟如何申报标识符?

提前致谢.

Dav*_*sta 8

"标识符必须声明"错误的原因是区分大小写.

Oracle标识符通常会自动转换为全部大写,但是当您用双引号将它们括起来时,大小写将被保留.所以这:

create or replace procedure "GETCUSTNAMEZZz"
Run Code Online (Sandbox Code Playgroud)

创建一个具有确切名称"GETCUSTNAMEZZz"的过程,同时:

create or replace procedure GETCUSTNAMEZZz
Run Code Online (Sandbox Code Playgroud)

将创建一个具有确切名称"GETCUSTNAMEZZZ"(全部大写)的过程.

在调用该过程时,您没有使用引号.所以它正在寻找不存在的"GETCUSTNAMEZZZ",因为你创建它是"GETCUSTNAMEZZz".

作为一项规则,我建议完全避免使用双引号,因为它们只是造成这种混淆而没有提供太多的好处.可悲的是,许多用于生成代码的工具都将它们粘贴在一起.

(请注意,这是关于标识符而不是字符串值.当您比较字符串值(例如'This is a String')和/或变量(例如VARCHAR2类型的变量)时,大小写总是很重要.)