ÈÕÀú

2008 7.7 Mon
ÈÕ Ò» ¶þ Èý ËÄ Îå Áù
  12345
6789101112
13141516171819
20212223242526
2728293031  
«Ô» 2008 - 7 «Äê»

ÎÄÕÂËÑË÷

ÈÕÖ¾ÎÄÕÂ

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 ugd

    INNER 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
 
END







Tags£º ÐÐÁÐת»»  

Àà±ð£º database |  ÆÀÂÛ(1) |  ä¯ÀÀ(1173) |  ÊÕ²Ø
1Â¥ [ÄäÃû]Â¥Ö÷ºÃ£¬ÏòÄúÇë½ 2008Äê05ÔÂ27ÈÕ 09:37:50 Says:
ÎҵIJ©¿ÍµØÖ·£ºhttp://365.blog.ccidnet.com£¬ÏÖÔÚÎÒÕýΪÕâ¸öÎÊÌâ·¢³îÄØ£¬ÄãµÄ·½·¨ºÜºÃ£¬Ï£ÍûÓÐЩעÊÍ»á¸üºÃЩ£¬ÕâÒ²ÊÇÎÒÃÇ¿ª·¢ÈËÔ±µÄÒ»¸öºÃϰ¹ß¡£ÎÒµÄMSN£º ljg365@sohu.comÏ£ÍûÓëÄú¶à¶à½»Á÷¡£Ð»Ð»¡£
·¢±íÆÀÂÛ