хранимая процедура даже после того, как нулевое значение сохраняет данные - PullRequest
0 голосов
/ 26 октября 2011
ALTER PROCEDURE [dbo].[STL_ADDNEWROLE](@ROLENAME VARCHAR(100), @STATUS BIT)
AS
BEGIN   
    SET NOCOUNT ON;
    IF(@ROLENAME IS NULL OR @STATUS IS NULL)
    BEGIN
       RETURN 0
    END
    ELSE
    BEGIN
       IF EXISTS (SELECT [RoleName], [Status] FROM ST_Roles 
                  WHERE [RoleName] = @ROLENAME)
       BEGIN
          RETURN 0
       END
       ELSE IF(@ROLENAME IS NOT NULL)
       BEGIN
          INSERT INTO ST_Roles ([RoleName], [Status]) VALUES(@ROLENAME, @STATUS)
          RETURN 1
       END
    END
END

Выше мой сохраненный процесс.Когда передаются значения NULL, он должен возвращать 0. Даже если передано 1 значение и другое значение не передано, он должен вернуть 0 вместо вставки записи.

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 26 октября 2011

Прежде чем описать свою проблему, я просто угадаю.Я полагаю, проблема в параметрах по умолчанию.Может быть, вы просто не передаете параметры или передаете пустую строку, поэтому попробуйте этот способ

 ALTER PROCEDURE [dbo].[STL_ADDNEWROLE](
               @ROLENAME VARCHAR(100) = NULL, 
                @STATUS BIT = NULL)
        AS
        BEGIN   
            SET NOCOUNT ON;
            IF(ISNULL(@ROLENAME, '') = '' OR @STATUS IS NULL)
                BEGIN
                    RETURN 0
                END
            ELSE
                BEGIN
                    IF EXISTS (SELECT [RoleName],[Status] from ST_Roles where  [RoleName] = @ROLENAME)
                        BEGIN
                            RETURN 0
                        END
                    ELSE IF(@ROLENAME IS NOT NULL)
                        BEGIN
                            INSERT INTO ST_Roles ([RoleName],[Status]) VALUES(@ROLENAME,@STATUS)
                            RETURN 1
                        END
                END


        END
...