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