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:语句被忽略"
这是我创建的确切过程,参数是正确的.
我究竟如何申报标识符?
提前致谢.
"标识符必须声明"错误的原因是区分大小写.
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类型的变量)时,大小写总是很重要.)