VS使用带临时表的存储过程

今天晚上遇到了一个郁闷的问题。

在我们使用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

54654_200810130044051.thumb.jpg

强行继续的话就会产生“对象#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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值