0
절차는 아래와 같습니다! oracle을 처음 사용했습니다. sqlserver 프로 시저를 Oracle로 복사하고 일부분을 변경하면됩니다. 내가 이것을 해결하는 데 도움이 될 것입니다!
CREATE OR REPLACE PROCEDURE SP_GetAdminResource
(
AdminId IN NVARCHAR2,
p_ResultSet OUT sys_refcursor
)
AS
BEGIN
WITH T AS(
SELECT T1.ResId, T1.UpResId
FROM SYS_Resource T1
WHERE T1.IsActive = 1
AND T1.ResId IN (SELECT DISTINCT T2.ResId
FROM SYS_RoleResource T2
WHERE T2.RoleId IN
(SELECT T3.RoleId
FROM SYS_RoleAdministrator T3, SYS_Role T10
WHERE T10.RoleId = T3.RoleId
AND T10.IsActive = 1
AND T3.AdminId = AdminId))),
TT AS (SELECT *
FROM T
UNION ALL (SELECT T4.ResId, T4.UpResId
FROM SYS_Resource T4, T
WHERE T4.IsActive = 1
AND T4.ResId = T.UpResId)),
SELECT T5.ResId, T5.UpResId, T5.ResIcon,T5.ResName, T5.ResUrl,T5.OrderNum,T8.ActionCode
FROM SYS_Resource T5 INTO p_ResultSet
LEFT JOIN (SELECT T6.ResId, T6.ActionCode
FROM SYS_RoleResource T6
WHERE T6.RoleId IN
(SELECT T7.RoleId
FROM SYS_RoleAdministrator T7, SYS_Role T9
WHERE T9.RoleId = T7.RoleId
AND T9.IsActive = 1
AND T7.AdminId = AdminId)) T8 ON T5.ResId =
T8.ResId
WHERE T5.IsActive = 1
AND T5.ResId IN (SELECT DISTINCT TT.ResId FROM TT)
ORDER BY T5.OrderNum ASC, T5.ResName ASC;
END SP_GetAdminResource;
ORA-00903은 잘못된 테이블 이름입니다. 'SYS_Resource'가 존재하고 그것에 접근 할 수 있습니까? 사용자와 동일한 스키마에 있습니까? 동의어가 있습니까? – vercelli
제거 쉼표 후'와 T4.ResId = T.UpResId))' –
당신은 후 p_ResultSet' INTO SYS_Resource T5 INTO p_ResultSet' 이동'로부터'절차의 WSBDSZ.SP_GETADMINRESOURCE 에 대한 statement' –