2016-04-26 99 views
0

我創建了一個存儲過程來檢查列是否有值。如果該列有一個值,則返回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 

我創建其中要求所述第一過程的第二過程。
代碼:

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。但是當我在第二個過程中執行第一個過程時,它返回0,它不返回1或-1。

回答

1
EXEC @ReturnValue = sp_addPermissions @sSQL, @column 
相關問題