ITPub博客

首页 > Linux操作系统 > Linux操作系统 > PLS-00371: 'WEB_LOGIN_CHECK_PK.CURSORTYPE' 最多允许有一个声明

PLS-00371: 'WEB_LOGIN_CHECK_PK.CURSORTYPE' 最多允许有一个声明

原创 Linux操作系统 作者:tolywang 时间:2011-06-02 09:52:56 0 删除 编辑
Oracle 10.2.0.4  ,   从其他地方导入过来的packages,  发现编译的时候报错。


报错信息如下:  

PACKAGE BODY DPBG_WEB.WEB_LOGIN_CHECK_PK
On line:  11
PLS-00371: 'WEB_LOGIN_CHECK_PK.CURSORTYPE' 最多允许有一个声明




package的spec 如下:


CREATE OR REPLACE PACKAGE DPBG_WEB.Web_Login_Check_Pk
AS

   TYPE CURSORTYPE IS REF CURSOR;

   PROCEDURE WEB_CHECK_LOGIN_USER_SP (
      V_SYS_NAME     IN       VARCHAR2,
      -- V_ROLE_TYPE IN VARCHAR2,
      V_LOGIN_NAME   IN       VARCHAR2,
      -- V_CHECK_TYPE IN VARCHAR2,
      RES            OUT      VARCHAR2,
     P_CURSOR       OUT      Web_Login_Check_Pk.CURSORTYPE
   );

   PROCEDURE DMZ_CHECK_LOGIN_USER_SP (
      V_SYS_NAME     IN       VARCHAR2,
      -- V_ROLE_TYPE IN VARCHAR2,
      V_LOGIN_NAME   IN       VARCHAR2,
      -- V_CHECK_TYPE IN VARCHAR2,
      RES            OUT      VARCHAR2,
      P_CURSOR       OUT      Web_Login_Check_Pk.CURSORTYPE
   );

   PROCEDURE GET_LOGIN_INFO_SP (
      V_USER_NO   IN       VARCHAR2,
      RES         OUT      VARCHAR2,
      P_CURSOR    OUT      Web_Login_Check_Pk.CURSORTYPE
   );
END Web_Login_Check_Pk;
/




Body 如下:

CREATE OR REPLACE PACKAGE BODY DPBG_WEB.Web_Login_Check_Pk AS
   TYPE CURSORTYPE IS REF CURSOR;
   PROCEDURE WEB_CHECK_LOGIN_USER_SP (
                                          V_SYS_NAME IN VARCHAR2,
                                        --V_ROLE_TYPE IN VARCHAR2,
                                        V_LOGIN_NAME IN VARCHAR2,
                                        --V_CHECK_TYPE IN VARCHAR2,
                                          RES OUT VARCHAR2,
                                          P_CURSOR OUT Web_Login_Check_Pk.CURSORTYPE
                                      )
    AS
    BEGIN
            
    /*    IF V_CHECK_TYPE = 'NT_ACCOUNT' THEN
               
            OPEN P_CURSOR FOR
                  SELECT A.SYS_ID,B.ROLE_ID,B.ROLE_NAME,C.NOR_USER_NAME
                    FROM R_SYSTEM_INFO_T A,
                         R_ROLE_INFO_T B,
                         R_ROLE_NORMAL_USER_T C
                    WHERE B.ROLE_ID = C.ROLE_ID
                      AND A.SYS_ID = B.SYS_ID
                      AND C.NOR_USER_TYPE = V_ROLE_TYPE --'AD-GROUP'
                      AND B.DEL_FLAG ='0'
                      AND A.DEL_FLAG ='0'
                      AND A.SYS_NAME =V_SYS_NAME;--'DSD'
                     
        ELSE*/
            
            OPEN P_CURSOR FOR
            
                  SELECT A.ROLE_ID,A.SPC_USER_PW,A.SYS_ID,A.SPC_USER_NAME,
                         A.USER_DEPT,C.TEAM_NAME,A.USER_DESC
                    FROM R_ROLE_SPECIAL_USER_T A,
                         R_SYSTEM_INFO_T B,
                         C_IT_DEPT_T C
                    WHERE A.SYS_ID = B.SYS_ID
                      AND A.USER_DEPT = C.TEAM_ID(+)
                      AND B.DEL_FLAG='0'   
                      AND B.SYS_NAME =V_SYS_NAME
                      AND A.DEL_FLAG='0'
                      AND A.SPC_USER_NAME = V_LOGIN_NAME;
         
        --END IF;              

    RES:= 'ok';
          EXCEPTION
          WHEN OTHERS THEN
          RES:='EXCEPTION ERROR.';
         
    END WEB_CHECK_LOGIN_USER_SP;
   
   PROCEDURE DMZ_CHECK_LOGIN_USER_SP (
      V_SYS_NAME     IN       VARCHAR2,
      -- V_ROLE_TYPE IN VARCHAR2,
      V_LOGIN_NAME   IN       VARCHAR2,
      -- V_CHECK_TYPE IN VARCHAR2,
      RES            OUT      VARCHAR2,
      P_CURSOR       OUT      Web_Login_Check_Pk.CURSORTYPE
   )
   AS
    BEGIN
            
    /*    IF V_CHECK_TYPE = 'NT_ACCOUNT' THEN
               
            OPEN P_CURSOR FOR
                  SELECT A.SYS_ID,B.ROLE_ID,B.ROLE_NAME,C.NOR_USER_NAME
                    FROM R_SYSTEM_INFO_T A,
                         R_ROLE_INFO_T B,
                         R_ROLE_NORMAL_USER_T C
                    WHERE B.ROLE_ID = C.ROLE_ID
                      AND A.SYS_ID = B.SYS_ID
                      AND C.NOR_USER_TYPE = V_ROLE_TYPE --'AD-GROUP'
                      AND B.DEL_FLAG ='0'
                      AND A.DEL_FLAG ='0'
                      AND A.SYS_NAME =V_SYS_NAME;--'DSD'
                     
        ELSE*/
            
            OPEN P_CURSOR FOR
            
                  SELECT A.ROLE_ID,A.SPC_USER_PW,A.SYS_ID,A.SPC_USER_NAME,
                         A.USER_DEPT,C.TEAM_NAME,A.USER_DESC
                    FROM R_ROLE_SPECIAL_USER_T A,
                         R_SYSTEM_INFO_T B,
                         C_IT_DEPT_T C
                    WHERE A.SYS_ID = B.SYS_ID
                      AND A.USER_DEPT = C.TEAM_ID(+)
                      AND B.DEL_FLAG='0'   
                      AND B.SYS_NAME ='REPORT'
                      AND A.DEL_FLAG='0'
                      AND A.SPC_USER_NAME = V_LOGIN_NAME;
         
        --END IF;              

    RES:= 'ok';
          EXCEPTION
          WHEN OTHERS THEN
          RES:='EXCEPTION ERROR.';
   END DMZ_CHECK_LOGIN_USER_SP;
      
    PROCEDURE GET_LOGIN_INFO_SP (
                                    V_USER_NO IN VARCHAR2,
                                      RES OUT VARCHAR2,
                                      P_CURSOR OUT Web_Login_Check_Pk.CURSORTYPE
                                  )
                                 
    AS
   
    BEGIN
         
         OPEN P_CURSOR FOR
         
               SELECT A.ID,A.TEAM_ID,A.USER_NAME,A.USER_NO,A.USER_TEL,A.USER_MAIL,B.ROLE_ID
                FROM C_IT_MEMBER_T A,
                     R_ROLE_USER_T B
                WHERE A.ID=B.USER_ID(+)
                  AND A.USER_NO=V_USER_NO ;
         
    END GET_LOGIN_INFO_SP;
        
END Web_Login_Check_Pk;
/



不是搞开发的,  不知道如何删除重复的定义 。   熟悉的帮忙看看 。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-696930/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    13469369