
2008Äê05ÔÂ15ÈÕ 19:28:15
ʵÏÖÐÐÏòÁÐת»¯µÄsql
|
ʹÓÃÁÙʱ±íµÄ·½Ê½ÊµÏÖ£º ALTER PROCEDURE [enterprise].[CustomUserInfo_GetPermissions] ( @CompanyID nvarchar(36), @DivisionID nvarchar(36), @DepartmentID nvarchar(36), @UserID nvarchar(36) ) AS BEGIN declare @BodyID nvarchar(36) declare @BodyType nvarchar(36) declare @PermissionID nvarchar(36) declare @Accessible bit select @BodyID=BodyID,@BodyType=BodyType from UserInformation where CompanyID=@CompanyID and DivisionID=@DivisionID and DepartmentID=@DepartmentID and UserID=@UserID create table #temp_permission ( BodyID nvarchar(36), BodyType nvarchar(36) ) insert into #temp_permission(BodyID,BodyType) values(@BodyID,@BodyType) declare cPermission cursor for select per.PermissionID, case when exists (select 1 from UserGroupDetail AS ugdINNER JOIN UserGroupPermission AS up ON ugd.CompanyID=up.CompanyID and ugd.DivisionID=up.DivisionID and ugd.DepartmentID=up.DepartmentID and ugd.UserGroupID=up.UserGroupID INNER JOIN UserInformation as ui ON ugd.CompanyID=ui.CompanyID and ugd.DivisionID=ui.DivisionID and ugd.DepartmentID=ui.DepartmentID and ugd.UserID=ui.UserID WHERE ui.UserID=@UserID and ugd.CompanyID=@CompanyID and ugd.DivisionID=@DivisionID and ugd.DepartmentID=@DepartmentID and up.PermissionID =per.PermissionID and up.Accessible =1 ) then 1 else 0 end as Accessible FROM PermissionInformation as per WHERE per.CompanyID=@CompanyID and per.DivisionID=@DivisionID and per.DepartmentID=@DepartmentID Open cPermission fetch next from cPermission into @PermissionID,@Accessible while @@fetch_status=0 begin declare @sql1 nvarchar(1000) declare @sql2 nvarchar(1000) set @sql1='alter table #temp_permission add '+ @PermissionID +' bit' exec(@sql1) set @sql2='update #temp_permission set '+@PermissionID+'='+cast(@Accessible as char(1)) exec(@sql2) fetch next from cPermission into @PermissionID,@Accessible end close cPermission deallocate cPermission select * from #temp_permission Tags£º
ÐÐÁÐת»»
|
Ò»¹²ÓÐ 1 ÌõÆÀÂÛ