Sql server 2008 如何在存储过程中设置整型参数的默认值?
我有一个存储产品,如下所示。如果我修改Sql server 2008 如何在存储过程中设置整型参数的默认值?,sql-server-2008,stored-procedures,Sql Server 2008,Stored Procedures,我有一个存储产品,如下所示。如果我修改 IF(@id!=0)to IF (@id!=null) 当我传递像200这样的id时,如果(@id!=null)将返回false,则将执行插入部分。为什么?我是否应该将@id作为int=null修改为@id作为int=0 ALTER PROCEDURE [dbo].[spname] -- Add the parameters for the stored procedure here @id as int=null, @vendo
IF(@id!=0)
to
IF (@id!=null)
当我传递像200这样的id时,如果(@id!=null)
将返回false,则将执行插入部分。为什么?我是否应该将@id作为int=null修改为@id作为int=0
ALTER PROCEDURE [dbo].[spname]
-- Add the parameters for the stored procedure here
@id as int=null,
@vendorName as varchar(150)=null
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF (@id != 0) -- update
BEGIN
...
END
ELSE -- insert
BEGIN
...
END
END
在SQL中,不能使用=
或测试Null
=代码>运算符。您必须改用为空
或为非空
ALTER PROCEDURE [dbo].[spname]
-- Add the parameters for the stored procedure here
@id as int = null,
@vendorName as varchar(150) = null
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF @id Is Not Null -- update
BEGIN
...
END
ELSE -- insert
BEGIN
...
END
END
在写入任何SP之前,请使用将ANSI_NULL设置为OFF
或
转到数据库属性>>选项,设置ANSI NULLS Enabled
使其适用于所需的数据库
如果(@ID!=0)
就可以了。一个int
总是0
永远不会null
,所以在你的情况下它永远不会被击中。使用Is null
或Is Not null
来测试null
<代码>=
和=代码>不起作用。我站直了!理查德是对的。