指出下列过程有什么错误 ?

yangzeDB 2011-12-22 01:52:49
过程由Codematic工具生成 但运行时都有错误


/******************************************************************
* 表名:EMP
* 时间:2011-12-22 10:19:44
* Made by Codematic
******************************************************************/

------------------------------------
--用途:得到主键字段最大值
--项目名称:
--说明:
--时间:2011-12-22 10:19:44
------------------------------------
CREATE OR REPLACE PROCEDURE EMP_GetMaxId (
)
IS
TempID Number;
BEGIN
SELECT max(EMPNO) into TempID FROM EMP
IF NVL(TempID) then
RETURN 1;
ELSE
RETURN TempID;
end IF;
END;

------------------------------------
--用途:是否已经存在
--项目名称:
--说明:
--时间:2011-12-22 10:19:44
------------------------------------
CREATE PROCEDURE EMP_Exists (
EMPNO_in NUMBER
)
AS
TempID Number;
BEGIN
SELECT count(1) into TempID FROM EMP WHERE EMPNO= EMPNO_in
IF TempID = 0 then
RETURN 0;
ELSE
RETURN 1;
end IF;
END;


------------------------------------
--用途:增加一条记录
--项目名称:
--说明:
--时间:2011-12-22 10:19:44
------------------------------------
CREATE PROCEDURE EMP_ADD (
EMPNO_in NUMBER
)
AS
BEGIN
INSERT INTO EMP(
EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO
)VALUES(
EMPNO_in ,ENAME_in ,JOB_in ,MGR_in ,HIREDATE_in ,SAL_in ,COMM_in ,DEPTNO_in
);
COMMIT;
END;

------------------------------------
--用途:修改一条记录
--项目名称:
--说明:
--时间:2011-12-22 10:19:44
------------------------------------
CREATE PROCEDURE EMP_Update
EMPNO_in NUMBER,
ENAME_in VARCHAR2,
JOB_in VARCHAR2,
MGR_in NUMBER,
HIREDATE_in DATE,
SAL_in NUMBER,
COMM_in NUMBER,
DEPTNO_in NUMBER
AS
BEGIN
UPDATE EMP SET
ENAME = ENAME_in ,JOB = JOB_in ,MGR = MGR_in ,HIREDATE = HIREDATE_in ,SAL = SAL_in ,COMM = COMM_in ,DEPTNO = DEPTNO_in
WHERE EMPNO= EMPNO_in

COMMIT;
END;

------------------------------------
--用途:删除一条记录
--项目名称:
--说明:
--时间:2011-12-22 10:19:44
------------------------------------
CREATE PROCEDURE EMP_Delete
EMPNO_in NUMBER
BEGIN
AS
DELETE EMP
WHERE EMPNO= EMPNO_in
COMMIT;
END;

------------------------------------
--用途:得到实体对象的详细信息
--项目名称:
--说明:
--时间:2011-12-22 10:19:44
------------------------------------
CREATE PROCEDURE EMP_GetModel
EMPNO_in NUMBER
AS
BEGIN
SELECT
EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO
FROM EMP
WHERE EMPNO= EMPNO_in
COMMIT;
END;

------------------------------------
--用途:查询记录信息
--项目名称:
--说明:
--时间:2011-12-22 10:19:44
------------------------------------
CREATE PROCEDURE EMP_GetList
AS
BEGIN
SELECT
EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO
FROM EMP
COMMIT;
END;


...全文
109 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangdh12 2011-12-30
  • 打赏
  • 举报
回复
1.缺少分号
2. IF NVL(TempID) 这样的写法有点怪。。 没见过。
kingkong_zhang 2011-12-30
  • 打赏
  • 举报
回复
1)少啦“;”.
2)存储过程没有返回值。
yangzeDB 2011-12-23
  • 打赏
  • 举报
回复
好久没有用CSDN了 是不是CSDN的帐号被黑后 没有人用了 没什么人回复问题了
我心飞翔 2011-12-22
  • 打赏
  • 举报
回复
第一个,存储过程无法返回值,应该定义一个存储方法,参考如下:

CREATE OR REPLACE FUNCTION EMP_GetMaxId
RETURN NUMBER
IS
TempID NUMBER;
BEGIN
SELECT NVL(max(EMPNO), 1) into TempID FROM EMP;
RETURN TempID;
END;


其它没有仔细看,反正错误不少,建议找一个PL/SQL的书吧,兄弟。
老黎 2011-12-22
  • 打赏
  • 举报
回复
大部分是没加分号";"的原因
yangzeDB 2011-12-22
  • 打赏
  • 举报
回复
每个过程都有错误 可以用scott测试
老黎 2011-12-22
  • 打赏
  • 举报
回复
SELECT max(EMPNO) into TempID FROM EMP;--少了;

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧