我在C#中使用 SqlCommand.ExecuteScalar 来获取Microsoft SqlServer中存储过程的结果。结果应该由存储过程的最后一个命令设置 - “SELECT something”。
它在程序中使用一个SELECT命令正常工作。但是,当存储过程中有更多SELECT时,它会出错。似乎返回了第一个SELECT的结果:
CREATE PROCEDURE TestProcedure AS
BEGIN
SELECT 'A'
SELECT 'B"
END
执行它将通过ExecuteScalar
返回'A'我正在使用别人的其他程序,并且他在其中使用了很多SELECT命令,显然是在Sql Magagement Studio中进行测试。我宁愿不能改变它们。
我能从最终的SELECT中获取值吗?
答案 0 :(得分:2)
您需要使用SqlDataReader.NextResult
来获取下一个结果集。它返回boolean
值以指示是否存在下一个值。要获得最后一个,请继续致电NextResult
,直到它返回false
。
var reader = command.ExecuteReader();
while (reader.NextResult())
{
//We still haven't reached the last result set yet...
}
答案 1 :(得分:1)
do { while (reader.Read())
{
// TODO: read away
}
} while (reader.NextResult())