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;
/
不是搞开发的, 不知道如何删除重复的定义 。 熟悉的帮忙看看 。
报错信息如下:
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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/35489/viewspace-696930/