PL / SQL没有显示,我启用了DBMS

时间:2017-04-27 18:29:27

标签: sql oracle plsql

我收到重复记录错误,当我运行此代码并且如果我删除声明重复变量的行时,我会说我不能在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;
/

1 个答案:

答案 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;