代码
-- Stored Procedure
CREATE OR REPLACE PROCEDURE DEVELOPMENT_PROCEDURE
(
P_JOB_TYPE IN JOBS.JOB_TITLE%type DEFAULT 'Manager'
, P_JOB_ID OUT JOBS.JOB_ID%type
, P_JOB_TITLE OUT JOBS.JOB_TITLE%type
) AS
BEGIN
SELECT JOB_ID, JOB_TITLE
INTO P_JOB_ID, P_JOB_TITLE
FROM JOBS
WHERE JOB_TITLE = P_JOB_TYPE;
END DEVELOPMENT_PROCEDURE;
代码
-- Calling the Stored Procedure
DECLARE
P_JOB_ID JOBS.JOB_ID%type;
P_JOB_TITLE JOBS.JOB_TITLE%type;
P_JOB_TYPE VARCHAR2(25) := 'Manager';
BEGIN
DEVELOPMENT_PROCEDURE(P_JOB_TYPE,P_JOB_ID,P_JOB_TITLE);
SYS.DBMS_OUTPUT.PUT_LINE(P_JOB_ID);
SYS.DBMS_OUTPUT.PUT_LINE(P_JOB_TITLE);
END;
问题
这是我运行后收到的错误消息。我按照教程一字不差地操作,但仍然遇到错误;已经解决了大部分问题,但目前卡在这里。
ORA-01403: no data found
ORA-06512: at "HR.DEVELOPMENT_PROCEDURE", line 8
ORA-06512: at line 8
没有设置任何异常,但我应该看到15条记录。有什么想法吗?
这可能是声明的问题吗?我需要参数读取Manager而不是MANAGER。如果是这样,我该如何修复变量以读作Manager。谢谢。
正如@Drumbeg所指出的那样,我实际上拉取了太多的记录,但即使在修复SQL以选择单个记录后,我仍然收到同样的错误。可能存在数据库本身的问题吗?
JOBS
表的查询没有返回任何数据。你确定存在job_title
为'Manager'
的记录吗? - DrumbegCURSOR
来解决这个问题。 - Drumbeg