我们可以从存储过程返回null值吗?我不想使用collase或isnull。我想在前端捕获NULL。有可能吗?
修改:
我正在使用
Sql Server 2005
例如。我想用的地方
CREATE PROCEDURE [Authentication].[spOnlineTest_CheckLogin]
@UserName NVARCHAR(50)
AS
BEGIN TRY
BEGIN TRAN
COMMIT TRAN
RETURN NULL
END TRY
错误 'spOnlineTest_CheckLogin'过程尝试返回NULL状态,这是不允许的。将返回状态0。 消息0,级别11,状态0,行0 当前命令发生严重错误。结果(如果有的话)应该被丢弃。
答案 0 :(得分:7)
不,存储过程的返回类型是INT
,它不能为空。
答案 1 :(得分:3)
使用输出参数,例如
CREATE PROCEDURE Test
@UserName NVARCHAR(50), @Status int output
AS
BEGIN TRY
BEGIN TRAN
COMMIT TRAN
set @Status = null
END TRY
begin catch
end catch
go
然后像这样称呼它
declare @s int
set @s =5
exec Test'bla',@s output
select @s --will be null
答案 2 :(得分:0)
你可以想到如下的过程。我先设定一下背景。我们可能有一个表Table1(id int, name varchar(2), Address varchar(2))
并想要获取id,如果没有找到,它将为null。所以我们可以编写如下的proc:
CREATE PROCEDURE GetId
@Name VARCHAR(50), @Status int output
AS
BEGIN TRY
set @Status = null
select @Status = id from Table1 where name=@name
这对你有用。