0
列が値を持つかどうかをチェックするストアドプロシージャを作成しました。カラムに値がある場合は1を返し、そうでない場合は-1を返します。ここで
コードは次のとおりです。別のプロシージャで1つのプロシージャを呼び出す
CREATE PROCEDURE [dbo].[sp_addPermissions](@groupName NVARCHAR(20), @column NVARCHAR(20))
AS
DECLARE @SQL NVARCHAR(MAX)
DECLARE @CountDef NVARCHAR(MAX)
DECLARE @FieldCount INT
IF EXISTS(SELECT * FROM addPermissions WHERE groupName = @groupName)
BEGIN
IF EXISTS(SELECT * FROM sys.columns WHERE NAME = @column AND OBJECT_ID = OBJECT_ID(N'addPermissions'))
BEGIN
SET @SQL=N'SELECT @Count=count(*)
FROM addPermissions
WHERE '+ quotename(@column) + ' IS NOT NULL
AND groupName = @groupName'
EXEC sys.sp_executesql @SQL, N'@groupName VARCHAR(20), @Count INT OUTPUT' ,
@groupName= @groupName,
@Count = @FieldCount OUTPUT
--SELECT(@SQL)
select @FieldCount
IF(@FieldCount = 0)
BEGIN
RETURN -1
END
ELSE
BEGIN
RETURN 1
END
END
ELSE
BEGIN
RAISERROR('Column does not exist', 16, 1)
END
END
ELSE
BEGIN
RAISERROR('Group do not have permission', 16, 1)
END
私は最初のプロシージャを呼び出す2番目の手順を作成しました。
コード:私はそれが正常に動作します最初の手順を実行したとき
CREATE PROCEDURE getAddPermissions(@username NVARCHAR(40), @column NVARCHAR(20))
AS
DECLARE @sSQL NVARCHAR(20)
IF EXISTS(SELECT * FROM userLogin WHERE username = @username)
BEGIN
SELECT @sSQL = userGroup.groupName FROM userGroup
INNER JOIN userLogin
ON userGroup.groupName = userLogin.groupName
WHERE userLogin.username = @username
EXEC sp_addPermissions @sSQL, @column
END
ELSE
BEGIN
PRINT 'User ' + @username + ' does not exist.'
END
、それが1または-1を返します。しかし、私が2番目の手続きで最初の手続きを実行すると0を返し、1または-1を返しません。