我创建了一个程序如下
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;
然后我尝试调用该过程
BEGIN
GETCUSTNAMEZZz('C2') ;
END;
这个 sql 给我一个错误,标识符 'GETCUSTNAMEZZZ' 必须声明为 ORA-06550:第 3 行,第 5 列:PL/SQL:语句被忽略”
这正是我创建的过程,而且参数是正确的。
我究竟该如何声明标识符??
提前致谢。
最佳答案
“必须声明标识符”错误的原因是区分大小写。
Oracle 标识符通常会自动转换为全部大写,但是当您将它们括在双引号中时,大小写会保留。所以这个:
create or replace procedure "GETCUSTNAMEZZz"
创建一个具有确切名称“GETCUSTNAMEZZz”的过程,同时:
create or replace procedure GETCUSTNAMEZZz
将创建一个具有确切名称“GETCUSTNAMEZZZ”(全部大写)的过程。
调用过程时没有使用引号。所以它正在寻找不存在的“GETCUSTNAMEZZZ”,因为您将其创建为“GETCUSTNAMEZZz”。
通常,我会建议完全避免使用双引号,因为它们只会造成这种困惑,而不会提供太多好处。可悲的是,许多用于生成代码的工具都喜欢将它们到处粘贴。
(请注意,这是关于标识符而不是字符串值。当您比较字符串值(例如“这是一个字符串”)和/或变量(例如 VARCHAR2 类型的变量)时,大小写总是很重要。)
关于oracle - 如何调用 plsql 过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16405901/