我想知道除OUT
参数之外是否有任何方法可以将存储过程中的数据转换为C#代码。
今天我的同事告诉我,存储过程中的所有select
个查询和OUT
参数都会返回给C#代码。它是否正确?如果是,那么如何选择应返回哪些结果?
对于VB6代码而不是c#,答案是否相同?
答案 0 :(得分:2)
是的,您可以使用 OUT 参数或SP中的 SELECT 将值从SP返回到您的应用程序。
OUT 参数通常用于单个值。 SELECT 可用于返回结果行。两者的组合可用于许多不同的变体,例如SP将返回行,而状态OUT参数可指示行计数或所请求数据的存在。
CREATE PROC usp_MySpecialSP
@conditionValue INT, @SPStatus INT OUT
AS
IF EXISTS(SELECT * FROM TableName WHERE column1=conditionValue)
BEGIN
SELECT @SPStatus=COUNT(*) FROM TableName WHERE column1=conditionValue
SELECT Column2, Column3, Column4 FROM TableName WHERE column1=conditionValue
END
ELSE
BEGIN
SELECT @SPStatus=0
END
GO
如果 m_SPStatusReturned> 0 ,您可以在此处获取值。
查看以下MSDN文章如何从SP获取返回的行 http://msdn.microsoft.com/en-us/library/d7125bke.aspx
或使用SELECT的单个值 http://msdn.microsoft.com/en-us/library/37hwc7kt.aspx
答案 1 :(得分:1)
是的,这是正确的 - 你处理这个问题的方式是:
要获取OUT
参数,您需要使用SqlParameter
SqlCommand
上定义ParameterDirection.Output
要在存储过程中获取SELECT
的结果集,您需要使用SqlDataReader
或SqlDataAdapter
来获取结果(就像执行内联SQL SELECT
查询)
实际上是第三种方式:存储过程中的RETURN
关键字 - 通常用于返回数字状态值。您可以使用值SqlParameter
ParameterDirection.ReturnValue
来捕获它