Ich habe eine gespeicherte Prozedur erstellt, um zu überprüfen, ob eine Spalte einen Wert hat oder nicht. Wenn die Spalte einen Wert hat, gibt sie 1 zurück und wenn nicht, gibt sie -1 zurück. Hier
ist der Code:Aufruf einer Prozedur in einer anderen
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
ich das zweite Verfahren geschaffen, das die erste Prozedur aufruft.
Code:
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
, als ich das erste Verfahren es funktioniert gut ausführen, gibt es 1 oder -1. Aber wenn ich die erste Prozedur in der zweiten Prozedur ausführe, gibt es 0 zurück, es gibt nicht 1 oder -1 zurück.