0
該程序如下所示! 我是oracle新手。當我將sqlserver過程複製到oracle並更改一些部分。這將是一個偉大的thxs幫助我解決這個問題!
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'存在,你有權訪問它嗎?它與用戶的模式是否相同?你有同義詞嗎? 'AND T4.ResId = T.UpResId')' – vercelli
''FROM SYS_Resource T5 INTO p_ResultSet'在'select語句'後移動'INTO p_ResultSet'語法錯誤 –
PROCEDURE的編譯錯誤WSBDSZ.SP_GETADMINRESOURCE 錯誤:PL/SQL:ORA-00933:SQL SQL語句還沒有結束正確 線:27 文本:從SYS_RESOURCE T5 INTO p_ResultSet 錯誤:PL/SQL:SQL語句忽略 線:8 文字:以T AS – ray