读书人

oracle存储过程失误

发布时间: 2013-03-26 21:09:08 作者: rapoo

oracle存储过程出错
CREATE OR REPLACE PROCEDURE DeleteFolder(delId IN INT, IDS OUT INT) AS
BEGIN
select count(*) into IDS from DOCTREE where PARENTID=delId;
IF IDS==0 THEN
delete from DOCTREE d where d.ID=delId;
END IF
END DeleteFolder;

在oracle sql developer中编译
提示:
“Warning: 执行完毕, 但带有警告”
oracle的存储过程不是太熟
望指教! 1 楼 andyandyandy 2007-03-29 手头没环境,运行不了
看是没看出什么毛病
建议用pl/sql developer工具跟踪一下 2 楼 andyxu 2007-03-29
有两个错误.
1.IF IDS==0 THEN
存储过程中等于应该为"="
2.END IF
没有";"结束符 3 楼 xuxl79 2007-03-29 改成如下代码,在sqlplus中,提示
CREATE OR REPLACE PROCEDURE DeleteFolder(delId IN INT, IDS OUT INT) AS
BEGIN
select count(*) into IDS from DOCTREE where PARENTID=delId;
IF IDS=0 THEN
delete from DOCTRE d where d.ID=delId;
END IF;
END DeleteFolder;
提示“警告: 创建的过程带有编译错误。”
而且试过了,把IF语句去掉 ,就ok了
IF IDS=0 THEN
delete from DOCTRE d where d.ID=delId;
END IF;

我觉得挺简单的阿,不知道哪里不对了 4 楼 xuxl79 2007-03-29 知道哪里出错了!
下面是正确的
CREATE OR REPLACE PROCEDURE DeleteFolder(delId IN INT, IDS OUT INT)
AS BEGIN

select count(*) into IDS from DOCTREE where PARENTID=delId;
IF IDS=0 THEN
BEGIN
delete from DOCTREE where RID=delId;
END;
END IF;
END DeleteFolder;

我不该用“ID”作字段名(把ID换成了RID)
我的异常网推荐解决方案:oracle存储过程,http://www.myexception.cn/oracle-develop/177537.html

读书人网 >软件架构设计

热点推荐