我收到重复记录错误,当我运行此代码并且如果我删除声明重复变量的行时,我会说我不能在fetch中使用该变量来输出我的循环。似乎一旦我摆脱了错误,另一个弹出。请给我一些指示。第一次在这里发帖要温柔。感谢。
CREATE OR REPLACE PROCEDURE DISP_GUIDE_NAME(I_GUIDE_NUM IN
GUIDE.GUIDE_NUM%TYPE) AS
I_GUIDE_NUM GUIDE.GUIDE_NUM%TYPE;
I_GUIDE_FNAME GUIDE.FIRST_NAME%TYPE;
I_GUIDE_LNAME GUIDE.LAST_NAME%TYPE;
CURSOR GUIDEGROUP IS
SELECT GUIDE.GUIDE_NUM, GUIDE.FIRST_NAME, GUIDE.LAST_NAME
FROM GUIDE
WHERE GUIDE.GUIDE_NUM = I_GUIDE_NUM;
BEGIN
OPEN GUIDEGROUP;
LOOP
FETCH GUIDEGROUP INTO I_GUIDE_NUM, I_GUIDE_FNAME, I_GUIDE_LNAME;
EXIT WHEN GUIDEGROUP%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(I_GUIDE_NUM||' '||I_GUIDE_FNAME||' '||I_GUIDE_LNAME);
END LOOP;
CLOSE GUIDEGROUP;
END;
/
答案 0 :(得分:0)
要解决(当前)标题" PL / SQL没有显示,我启用了DBMS",并且基于(当前)代码片段,在您的BEGIN之后,您应该启用输出。
DBMS_OUTPUT.ENABLE([Some Number Of Bytes]);
另外,如果通过SQL * PLUS运行......
SET SERVEROUTPUT ON
...在执行脚本之前。
将参数重命名为" P _"并且还在CURSOR的WHERE子句中添加引用。
CREATE TABLE GUIDE
(
guide_num NUMBER
,first_name VARCHAR2(0032)
,last_name VARCHAR2(0032)
);
INSERT INTO GUIDE VALUES (0001, 'Don', 'Quiote');
INSERT INTO GUIDE VALUES (0002, 'Max', 'Headroom');
INSERT INTO GUIDE VALUES (0042, 'Peter', 'Griffin');
COMMIT;
CREATE OR REPLACE PROCEDURE DISP_GUIDE_NAME
(
P_I_GUIDE_NUM IN GUIDE.GUIDE_NUM%TYPE
)
AS
I_GUIDE_NUM GUIDE.GUIDE_NUM%TYPE;
I_GUIDE_FNAME GUIDE.FIRST_NAME%TYPE;
I_GUIDE_LNAME GUIDE.LAST_NAME%TYPE;
CURSOR GUIDEGROUP IS
SELECT
GUIDE.GUIDE_NUM
,GUIDE.FIRST_NAME
,GUIDE.LAST_NAME
FROM GUIDE
WHERE GUIDE.GUIDE_NUM = P_I_GUIDE_NUM;
BEGIN
OPEN GUIDEGROUP;
LOOP
FETCH GUIDEGROUP INTO I_GUIDE_NUM, I_GUIDE_FNAME, I_GUIDE_LNAME;
EXIT WHEN GUIDEGROUP%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(I_GUIDE_NUM||' '||I_GUIDE_FNAME||' '||I_GUIDE_LNAME);
END LOOP;
CLOSE GUIDEGROUP;
END;
/
BEGIN
DBMS_OUTPUT.ENABLE(1000);
Disp_Guide_Name(0042);
END;
/
DROP TABLE GUIDE;