各位大侠: 最近遇到一个奇怪的问题,如果存储过程返回实体表,则返回结果集是没问题。但是,如果存储过程是通过一个临时表返回结果集,居然得不到。我的代码如下,请高手指点。谢谢!OleDbConnection conn = new OleDbConnection(@"Provider=SQLOLEDB;Data Source=(local);Initial Catalog=test;Persist Security Info=True;User ID=sa;Password=123456;");
conn.Open();
OleDbCommand comm = new OleDbCommand("exec p_get_goods", conn);
OleDbDataAdapter da = new OleDbDataAdapter(comm);
DataTable ldt = new DataTable();
da.Fill(ldt);
conn.Close();也就是,如果 p_get_goods 中通过实体表返回,是没有问题的,如果是临时表,则取不到。
conn.Open();
OleDbCommand comm = new OleDbCommand("exec p_get_goods", conn);
OleDbDataAdapter da = new OleDbDataAdapter(comm);
DataTable ldt = new DataTable();
da.Fill(ldt);
conn.Close();也就是,如果 p_get_goods 中通过实体表返回,是没有问题的,如果是临时表,则取不到。
记得要加上
create procedure p_get_goods
ascreate table #tmp(
vgdsno varchar(30))insert #tmp select top 99 vgdsno from t_goodsselect * from #tmp
drop table #tmp
return 0
gogrant exec on p_get_goods to public
go在查询分析器中执行是没问题的.
奇怪的是,我不用临时表,是可以得到结果集的.
drop procedure p_get_goods
go
create procedure p_get_goods
as
select top 99 vgdsno into #tmp from t_goods
select * from #tmp
return 0
go
grant exec on p_get_goods to public
go
结果还是取不到.
set nocounts on
写反了
as
set nocount on--相关操作set nocount off