当前位置:主页>delphi7/进销存和数据库> 文章内容

sql问题,救命。。。

发布时间:2010-01-25 | QQ免费站
1楼: 问一个问题在sql中select @a=a from b where 条件可以获得@a得值 如何将 @sql='select a from b where 条件'execute(@sql) 的值赋给@a

  字串9

2楼: 我也尝试过这个问题,最后没找到好的解决方法,最后只好把值先暂存到临时表中

 

字串7

3楼: @sql = ‘select @avalue = a from b where 条件‘; Exec sp_executesql @sql, @params=N‘@a int output‘, @avalue = @a output;

  字串2

4楼: to someset 我運行你的語句怎麼不大對阿

 

字串3

5楼: 不好意思,有点错误 @sql = ‘select @avalue = a from b where 条件‘; Exec sp_executesql @sql, @params=N‘@avalue int output‘, @avalue = @a output; 再试一下罢

 

字串6

6楼: CREATE procedure pcost @yyyy varchar(4),@stmonth varchar(2),@endmonth varchar(2),@fieldid varchar(20),@costfield varchar(20) As Declare @reportid varchar(20),@sql nvarchar(1000),@fieldname varchar(20) Declare @sumfund float Declare pcursor cursor for select reportid from #pcost Open pcursor Fetch next from pcursor into @reportid While @@fetch_status=0 begin exec qcost @yyyy,@stmonth,@endmonth,@fieldid,@costfield,@reportid,@sum=@sumfund output Set @fieldname=‘‘+(select category from reportcode where reportid=@fieldid)+‘‘ Set @sql=‘update #pcost set ‘+@fieldname+‘=‘+@sumfund+‘ where reportid=‘‘‘+@reportid+‘‘‘‘ Exec(@sql) Fetch next from pcursor into @reportid end Close pcursor Deallocate pcursor GO CREATE procedure qcost @yyyy varchar(4),@stmonth varchar(2),@endmonth varchar(2),@fieldid varchar(20),@costfield varchar(20),@reportid varchar(20),@sum float output As Declare @sql nvarchar(1000),@fieldname varchar(20),@costid varchar(20) Declare @fund float Declare Qcursor cursor for select costid from reprelation where reportid like ‘‘‘‘+cast(@reportid as varchar(20))+‘%‘‘‘ and fieldid =@fieldid Open Qcursor Fetch next from Qcursor into @costid while @@fetch_status=0 begin Set @sql=‘select @fund=sum(‘+@costfield+‘) from costdetail where thj.splitdate(costdetail.[date],0)=‘+@yyyy+‘ and thj.splitdate(costdetail.[date],1) between ‘+@stmonth+‘ and ‘+@endmonth+‘ and costid like ‘‘‘+cast(@costid as varchar(20))+‘%‘‘‘ Exec sp_executesql @sql,N‘@fund float output‘,@fund output Set @sum=@sum+@fund Fetch next from Qcursor into @costid end Close Qcursor Deallocate Qcursor Return @sum GO 这样参数@sum还是传不过去阿。

  字串9

7楼: CREATE procedure pcost @yyyy varchar(4),@stmonth varchar(2),@endmonth varchar(2),@fieldid varchar(20),@costfield varchar(20) As Declare @reportid varchar(20),@sql nvarchar(1000),@fieldname varchar(20) Declare @sumfund float Declare pcursor cursor for select reportid from #pcost Open pcursor Fetch next from pcursor into @reportid While @@fetch_status=0 begin exec qcost @yyyy,@stmonth,@endmonth,@fieldid,@costfield,@reportid,@sum=@sumfund output Set @fieldname=‘‘+(select category from reportcode where reportid=@fieldid)+‘‘ Set @sql=‘update #pcost set ‘+@fieldname+‘=‘+@sumfund+‘ where reportid=‘‘‘+@reportid+‘‘‘‘ Exec(@sql) Fetch next from pcursor into @reportid end Close pcursor Deallocate pcursor GO CREATE procedure qcost @yyyy varchar(4),@stmonth varchar(2),@endmonth varchar(2),@fieldid varchar(20),@costfield varchar(20),@reportid varchar(20),@sum float output As Declare @sql nvarchar(1000),@fieldname varchar(20),@costid varchar(20) Declare @fund float Declare Qcursor cursor for select costid from reprelation where reportid like ‘‘‘‘+cast(@reportid as varchar(20))+‘%‘‘‘ and fieldid =@fieldid Open Qcursor Fetch next from Qcursor into @costid while @@fetch_status=0 begin Set @sql=‘select @fund=sum(‘+@costfield+‘) from costdetail where thj.splitdate(costdetail.[date],0)=‘+@yyyy+‘ and thj.splitdate(costdetail.[date],1) between ‘+@stmonth+‘ and ‘+@endmonth+‘ and costid like ‘‘‘+cast(@costid as varchar(20))+‘%‘‘‘ Exec sp_executesql @sql,N‘@fund float output‘,@fund output Set @sum=@sum+@fund Fetch next from Qcursor into @costid end Close Qcursor Deallocate Qcursor Return @sum GO

  字串4

8楼: 内外变量还是最好不要用同一名称,我不知道会不会有什么不良结果另外如结果返回空记录集返回参数会为NULL

  字串2

9楼: 多人接受答案了。

  字串7