有以下两个存储过程 fox_test_01、fox_test_02 和 fox_test_03 :
------------------------------------------------
create proc fox_test_01
as
begin
select '1' 编号, 'apple' 名称
union all
select '2' 编号, 'banana' 名称
union all
select '3' 编号, 'cherry' 名称
end
------------------------------------------------
create proc fox_test_02
as
begin
select '1' 编号, 'apple' 名称
into #tmp
union all
select '2' 编号, 'banana' 名称
union all
select '3' 编号, 'cherry' 名称
select * from #tmp
end
------------------------------------------------
create proc fox_test_03
as
begin
create table #tmp(编号 varchar(20), 名称 varchar(50))
insert into #tmp(编号, 名称)
select '1' 编号, 'apple' 名称
union all
select '2' 编号, 'banana' 名称
union all
select '3' 编号, 'cherry' 名称
select * from #tmp
end
------------------------------------------------
利用 SQLCommand 的 ExecuteReader 方法分别执行以下SQL:
exec fox_test_01
exec fox_test_02
exec fox_test_03
结果只有fox_test_01返回结果,fox_test_02却返回空,fox_test_03提示SQL语法错误而不能执行。
貌似 ExecuteReader 方法只能获取第一个语句的结果,而导致上面的结果。这个是不是Bug?
因为很多复杂的报表,都用存储过程来执行查询并返回结果,希望能够解决这个问题。
[此贴子已经被作者于2013-3-6 14:06:54编辑过]