今天晚上遇到了一个郁闷的问题。
在我们使用VS2005或者VS2008的时候,在t数据集中使用存储过程的时候无法识别存储过程当中有临时表的现象。具体表现如下:
1.在数据集中添加TableAdapter,选择TableAdapter的数据库访问方式选择“使用现有存储过程”。
2.在将命令绑定到现有存储过程页面上,select中选择我们数据库已经现有的存储过程,一般的存储过程选择后,右边的数据列就会显示出存储过程的输出结果集的列名。
3.下一步就都非常正常,可以产生生产的TableAdapter所有信息。
但是我的存储过程就出现了问题,存储实例如下(纯属举例用):
create proc ptest(@id int)
as
create table #test(id int,username nvarchar(50))
insert into #test select id,username from tabuser
select * from #test where id=@id
强行继续的话就会产生“对象#test无效”,而产生的TableAdapter就没有任何字段含义。所有,就无法利用存储过程。
自己反复试验,发现是因为存储过程中产生临时表的问题造成的,只要使用了临时表,那么这个存储过程就无法正常加入。
所以我采用了替换的方法,步骤如下:
在数据库中建立一个输出一模一样的表,然后编写一个和要利用的存储过程名称一模一样的存储过程。
create table test(id int,username nvarchar(50))
go
create proc ptest(@id int)
as
select * from test
然后按照之前的步骤来添加TableAdapter,一切正常。
最后,等添加TableAdapter完毕后,将虚假的存储过程替换成带临时表的存储过程,那么就可以正常使用临时表的存储过程了。
写下来,以作备用。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/54654/viewspace-470160/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/54654/viewspace-470160/