Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 我们可以从存储过程返回null吗_Sql Server_Database_Sql Server 2005_Tsql_Stored Procedures - Fatal编程技术网

Sql server 我们可以从存储过程返回null吗

Sql server 我们可以从存储过程返回null吗,sql-server,database,sql-server-2005,tsql,stored-procedures,Sql Server,Database,Sql Server 2005,Tsql,Stored Procedures,我们可以从存储过程返回空值吗。我不想使用collase或isnull。我想在前端捕获NULL。可能吗 编辑: 我正在使用SQLServer2005 我想在哪里使用 CREATE PROCEDURE [Authentication].[spOnlineTest_CheckLogin] @UserName NVARCHAR(50) AS BEGIN TRY BEGIN TRAN COMMIT TRAN RETURN NULL

我们可以从存储过程返回空值吗。我不想使用collase或isnull。我想在前端捕获NULL。可能吗

编辑:

我正在使用
SQLServer2005

我想在哪里使用

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行
当前命令发生严重错误。如果有结果,则应放弃

否,存储过程的返回类型为
INT
,不能为null。

例如,使用输出参数

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

你可以想象下面这样的过程。让我先说明一下背景。我们可能有一个表
Table1(id int,name varchar(2),Address varchar(2))
并希望获取该id,如果找不到,则该id将为null。因此,我们可以编写如下的过程:

CREATE PROCEDURE GetId
  @Name  VARCHAR(50), @Status int output
AS
 BEGIN TRY
     set @Status = null
     select @Status = id from Table1 where name=@name

这对您很有用。

您使用的是什么数据库?SQL Server、MySQL等等?@Justin:Q被标记为T-SQL。这是SQL Server。@Mehrdad Afshari,Sybase也使用T-SQL。存储过程的输入参数可以是INT,但仍然可以赋值为NULL,那么为什么不返回参数呢?@Chris:语言就是这样设计的。我怀疑对于其预期用例来说,它是一个失败/成功状态,不为null是有意义的。