大家看看,這個問題怎么解決?
我有一個表,其中存放著用戶對各個表單的權限,其格式如下:
UserID,rFormName,rView
分別對應用戶名,表單名字,權限,檢索出來的數據為:
CatchWind frmCadre 1
CatchWind frmCadreDimiss 0
CatchWind frmDept 1
CatchWind frmDeptChange 1
現在我想把數據變為橫向的,如:
字段定義為以下的表名,值為相應的權限
字段名:frmCadre,frmCadreDimiss,frmDept,frmDeptChange
值: 1 0 1 1
我寫了如下一個存儲過程,
CREATE Proc SP_USERRIGHT(@UserID varchar(20))
AS
DECLARE @SQLA varchar(3000) --創建臨時表
DECLARE @SQLB varchar(1000) --更新權限數據
SET @SQLA=''
SET @SQLB=''
DECLARE @FormName varchar(50)
DECLARE @Rig bit
DECLARE User_Right CURSOR FAST_FORWARD
FOR SELECT rFormName,rView from UserRight where rUserId=@UserID
OPEN User_Right
FETCH NEXT FROM User_Right INTO @FormName,@Rig
WHILE(@@FETCH_STATUS=0)
BEGIN
SET @SQLA=@SQLA + @FormName + ' bit ,'
SET @SQLB=@SQLB + LTRIM(STR(@Rig)) + ','
FETCH NEXT FROM User_Right INTO @FormName,@Rig
END
CLOSE User_Right
DEALLOCATE User_Right
SET @SQLA='Create Table #Rights (' + LEFT(@SQLA,LEN(@SQLA)-1) + ')'
EXEC (@SQLA)
SET @SQLB='INSERT #Rights VALUES(' + LEFT(@SQLB,LEN(@SQLB)-1) + ')'
EXEC (@SQLB)
SELECT * FROM #Rights
本意是讓@SQLA生成臨時表,再用@SQLB插入其相應的權限數據,
但執行 exec sp_userright 'CatchWind' 時報如下錯誤:
伺服器: 訊息 208,層級 16,狀態 1,行 1
無效的物件名稱 '#Rights'。
伺服器: 訊息 208,層級 16,狀態 1,程序 SP_USERRIGHT,行 29
無效的物件名稱 '#Rights'。
請大家看看該怎么解決?