Sql server 存储过程,即使在null值保存数据之后
以上是我的存储过程。传递空值时,它应返回0。即使传递了1个值而未传递另一个值,也应返回0,而不是插入记录Sql server 存储过程,即使在null值保存数据之后,sql-server,stored-procedures,optional-parameters,Sql Server,Stored Procedures,Optional Parameters,以上是我的存储过程。传递空值时,它应返回0。即使传递了1个值而未传递另一个值,也应返回0,而不是插入记录 非常感谢您的帮助。在您描述您的问题之前,我先猜猜。我想问题在于默认参数。也许您只是不传递参数或传递空字符串,所以请尝试这种方法 ALTER PROCEDURE [dbo].[STL_ADDNEWROLE](@ROLENAME VARCHAR(100), @STATUS BIT) AS BEGIN SET NOCOUNT ON; IF(@ROLENAME IS NULL
非常感谢您的帮助。在您描述您的问题之前,我先猜猜。我想问题在于默认参数。也许您只是不传递参数或传递空字符串,所以请尝试这种方法
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,那么您希望它做什么呢?有什么问题吗?尝试为参数设置默认值。在我的计算机上,这与您描述的方式相同。也许我不明白这个问题?当任一值为null时,它返回0,如果角色名已经存在,它也返回0。当角色名为非空且状态为非空且角色名不存在时,返回1。这与您试图实现的目标有何不同?当我输入rolename empty或null时,它正在保存数据,而我希望它返回0。请尝试添加默认值和/或检查@rolename是否为空字符串。检查我的答案。现在一切正常。您能告诉我是否必须像您那样指定值吗?只有在您有可选参数的情况下。查看链接了解更多信息
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