2016-04-26 20 views
0

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.

Antwort

1
EXEC @ReturnValue = sp_addPermissions @sSQL, @column 
Verwandte Themen