这是我成功的存储过程
CREATE OR REPLACE Procedure add_student
(ns_sid IN STUDENTS.sid%type,
ns_firstname IN STUDENTS.firstname%type,
ns_lastname IN STUDENTS.lastname%type,
ns_status IN STUDENTS.status%type,
ns_gpa IN STUDENTS.gpa%type,
ns_email IN STUDENTS.email%type)
IS
BEGIN
INSERT INTO STUDENTS (sid, firstname, lastname, status, gpa, email)
VALUES (ns_sid, ns_firstname, ns_lastname, ns_status, ns_gpa, ns_email);
END;
/
这是首先生成表的调用
create table students (sid char(4) primary key check (sid like 'B%'),
firstname varchar2(15) not null, lastname varchar2(15) not null, status varchar2(10)
check (status in ('freshman', 'sophomore', 'junior', 'senior', 'graduate')),
gpa number(3,2) check (gpa between 0 and 4.0), email varchar2(20) unique);
最初,我试图用一些预定义的参数调用存储过程。
BEGIN
add_student("B100", "Steve", "Stevenson", "senior", 2.31, "Ssteve@edu");
END;
/
这导致错误“PLS-00201:标识符'B100'必须声明”
我是PL/SQL的新手,很难解决这个问题。我尝试添加DECLARE语句
DECLARE
ns_sid STUDENTS.sid%type;
BEGIN
ns_sid := "B100";
add_student(ns_sid, "Steve", "Stevenson", "senior", 2.31, "Ssteve@edu");
END;
/
这仍然会导致错误“PLS-00201:必须声明标识符‘B100’”,但它表示“PL/SQL:忽略语句”,然后表示“PLS-00201:必须声明标识符‘Steve’”
进一步挖掘,我试图将firstname声明为varchar,看看它是否有效。剧透,它没有。
DECLARE
ns_sid STUDENTS.sid%type;
ns_fn varchar(15);
BEGIN
ns_sid := "B100";
ns_fn := "Steve";
add_student(ns_sid, ns_fn, "Stevenson", "senior", 2.31, "Ssteve@edu");
END;
/
这给了三个PLS-00201说“B100”、“史蒂夫”和“史蒂文森”必须申报。
我希望有人能澄清我的误解。谢谢
在Oracle中处理字符串时,不要使用双引号,而是使用单引号,例如。
BEGIN
add_student('B100', 'Steve', 'Stevenson', 'senior', 2.31, 'Ssteve@edu');
END;
/
错误消息: [Microsoft][ODBC驱动程序for Oracle][Oracle]ORA-06550:第1行,第7列:PLS-00201:标识符STORED_PROCEDURE必须声明ORA-06550:第1行,第7列:PL/SQL:语句被忽略
所以我一直有这个错误,我不知道发生了什么。我在谷歌上搜索了一下,读了一些关于这个错误的问题,但什么都没用。我只想运行它,这样我就可以完成我的项目。 错误:开始低库存;结束;*第1行错误:ORA-06550:第1行,第9列:PLS-00201:标识符“LOWINVENTORY”必须声明ORA-06550:第1行,第7列:PL/SQL:忽略语句 编辑: 表创建:
我试着按照步骤在Toad中运行以下代码 1。初始化变量2并为其分配日期。打印出来确认3。然后使用变量检查日期范围的my when子句<你知道我做错了什么吗? --检查我的time子句 --检查:this_day之间(2018年4月1日至2018年12月1日) ORA-06550:第1行,第21列:PLS-00201:标识符“01-JAN-2018”必须声明ORA-06550:第1行,第7列:PL/
我正在使用SODA for Java存储和检索Oracle12c DB中的文档。我正在效仿这个例子。 这一例外背后的原因将是什么?
这是我的程序:
作为标题,我正在Oracle上编写一些存储过程,首先我检查了版本 有结果 ... 并尝试NVL2与常规SQL查询 结果似乎是对的 ... 所以我确认11g确实支持NLV2功能,我现在可以开始编写我的存储过程,如下所示: Oracle告诉我它编译有错误,即 PLS-00201:必须声明标识符“NVL2” 为什么函数在常规查询中工作,但在存储过程中变得未声明?