【问题标题】:stored procedure even after null value saves the data即使在空值保存数据后的存储过程
【发布时间】:2011-10-26 12:29:25
【问题描述】:
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 而不是插入记录。

非常感谢任何帮助。

【问题讨论】:

  • 你能澄清你想要什么吗?目前它返回 0,如果其中一个为空,你希望它做什么?
  • 有什么问题?尝试为参数设置默认值。
  • 在我的计算机上,这与您描述的方式相同。也许我不明白这个问题?当任一值为null 时,它返回0,如果RoleName 已经存在,它也返回0。当RoleName 为非空且Status 为非空且RoleName 不存在时,它返回1。这与您想要实现的目标有何不同?
  • 当我输入 rolename 为空或 null 时,它正在保存数据,而不是我希望它返回 0。
  • 尝试添加默认值和/或检查@rolename 是否为空字符串。检查我的答案。

标签: sql-server stored-procedures optional-parameters


【解决方案1】:

在你描述你的问题之前,我只是猜测一下。我想问题出在默认参数上。可能你只是不传参数或者传空字符串,这样试试吧

 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

【讨论】:

猜你喜欢
  • 2011-09-06
  • 2020-01-09
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 2015-08-21
  • 1970-01-01
  • 2020-10-05
  • 2015-04-28
相关资源
最近更新 更多