我正在尝试使用在 Web 服务中调用的存储过程来更新 SQL Server 表。在这里,我需要存储过程的返回值,以便我可以向用户发送有关更新确认的 true 或 false。
我使用 C# 作为语言和 ADO.Net 体系结构来连接和操作 SQL Server 表。
我也在使用SQLDataConnection
(System.Data.SqlClient
)。
我正在尝试使用在 Web 服务中调用的存储过程来更新 SQL Server 表。在这里,我需要存储过程的返回值,以便我可以向用户发送有关更新确认的 true 或 false。
我使用 C# 作为语言和 ADO.Net 体系结构来连接和操作 SQL Server 表。
我也在使用SQLDataConnection
(System.Data.SqlClient
)。
您可以将存储过程创建为:
CREATE PROC ReturningProc
AS
BEGIN
IF (@SomeCondition)
SELECT 1
SELECT 0
END
您可以使用 sql 命令对象将其调用为:
object retval = sqlCommand.ExecuteScalar();
您需要使用 SqlDataReader 对象来读取结果。简而言之,像这样:
var command = new SqlCommand(commandText, sqlConnection);
command.CommandType = CommandType.StoredProcedure;
using(var reader = command.ExecuteReader())
{
while(reader.Read())
{
var result = reader[0];
//Respond to result.
}
}
创建类似这样的过程:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[Validate]
@b BIT OUT
AS
if(some condition)
SET @b = 1
else
SET @b=0
GO
像这样在c#中检索值
SqlParameter retval = sqlcomm.Parameters.Add("@b", SqlDbType.Bit);
retval.Direction = ParameterDirection.ReturnValue;
sqlcomm.ExecuteNonQuery();
string retunvalue = Convert.ToBoolean(sqlcomm.Parameters["@b"].Value);
并且您在调用存储过程之前已经设置了 @b 的值,否则 SP 将出现异常。