I want help in converting the oracle script to sql..the one I did is giving me extra records.
The query is as follows
SELECT RowLevelSecurityCode FROM ValidRowLevelSecurity START WITH RowLevelSecurityCode in ( SELECT DISTINCT SecurityCode RowlevelSecurityCode FROM ValidUserSetup VUS,ValidRowLevelSecurityUser vrsu WHERE VUS.SecurityCode = vrsu.RowLevelSecurityCode AND VUS.userid = arguserId AND vrsu.SelectFlag = argEnableRLS UNION SELECT RowlevelSecurityCode from ValidRowLevelSecurityPrivilege WHERE ValidRowLevelSecurityPrivilege.privilegeCode IN ( SELECT ValidPrivilegeUser.PrivilegeCode FROM ValidPrivilegeUser INNER JOIN ValidPrivilege ON ValidPrivilegeUser.PrivilegeCode = ValidPrivilege.PrivilegeCode WHERE ValidPrivilegeUser.UserId = arguserId) AND ValidRowLevelSecurityPrivilege.SelectFlag = argEnableRLS ) CONNECT BY PRIOR RowLevelSecurityCode = ParentRowLevelSecurityCode AND LEVEL < 32769 GROUP BY RowLevelSecurityCode;
The closest I got to is as below
;WITH n(RowLevelSecurityCode) AS (SELECT RowLevelSecurityCode FROM ( SELECT DISTINCT SecurityCode RowlevelSecurityCode FROM ValidUserSetup VUS, ValidRowLevelSecurityUser vrsu WHERE VUS.SecurityCode = vrsu.RowLevelSecurityCode AND VUS.userid = @argUserId AND vrsu.SelectFlag = @argEnableRLS UNION SELECT RowLevelSecurityCode from ValidRowLevelSecurityPrivilege WHERE ValidRowLevelSecurityPrivilege.privilegeCode IN ( SELECT ValidPrivilegeUser.PrivilegeCode FROM ValidPrivilegeUser INNER JOIN ValidPrivilege ON ValidPrivilegeUser.PrivilegeCode = ValidPrivilege.PrivilegeCode WHERE ValidPrivilegeUser.UserId = @argUserId) AND ValidRowLevelSecurityPrivilege.SelectFlag = @argEnableRLS) E UNION ALL SELECT v.RowLevelSecurityCode FROM ValidRowLevelSecurity as v, n WHERE n.RowLevelSecurityCode = v.ParentRowLevelSecurityCode ) INSERT @UserSecurityCode SELECT DISTINCT RowLevelSecurityCode FROM n