当前位置: 代码迷 >> Sql Server >> 关于sp_executesql输出结果解决方法
  详细解决方案

关于sp_executesql输出结果解决方法

热度:36   发布时间:2016-04-27 13:02:08.0
关于sp_executesql输出结果
SQL code
declare @Sql nvarchar(500)declare @SysOrderNo intdeclare @ShortName varchar(30),@Spec varchar(30),@Spec1 varchar(30),@Spec2 varchar(30),@Spec3 varchar(30),@Spec4 varchar(30)declare @DataBaseName varchar(30)Set @DataBaseName='MDFData'Set @SysOrderNo=5Set @Sql='Select @ShortName=ShortName,@Spec=Spec,@Spec1=Spec1,@Spec2=Spec2,@Spec3=Spec3,@Spec4=Spec4 From [email protected]+'.dbo.ORDERDETAIL '+' Where SysOrderNo='+cast(@SysOrderNo as varchar(10))Select @Sqlexec sp_executesql @Sql,[email protected] varchar(30) output,@Spec varchar(30) output,@Spec1 varchar(30) output,@Spec2 varchar(30) output,@Spec3 varchar(30) output,@Spec4 varchar(30) output',@ShortName output,@Spec output,@Spec1 output,@Spec2 output,@Spec3 output,@Spec4 outputSelect @ShortName,@Spec,@Spec1,@Spec2,@Spec3,@Spec4


[email protected],@Spec,@Spec1,@Spec2,@Spec3,@Spec4记录
问题在于:
1程序这里只能用exec(@Sql)的形式
2要取出返回值

单纯执行SQL语句返回【3】条记录,但是用exec sp_executesql却只有【1】条,帮助文档里说可以用游标,但是怎么弄都不对,求帮助

------解决方案--------------------
SQL code
declare @Sql nvarchar(500)declare @SysOrderNo intdeclare @ShortName varchar(30),@Spec varchar(30),@Spec1 varchar(30),@Spec2 varchar(30),@Spec3 varchar(30),@Spec4 varchar(30)declare @DataBaseName varchar(30)Set @DataBaseName='MDFData'Set @SysOrderNo=5create table #T (    Row        int identity(1,1)    not null,    ShortName varchar(30)        null,    Spec    varchar(30)            null,    Spec1    varchar(30)            null,    Spec2    varchar(30)            null,    Spec3    varchar(30)            null,    Spec4    varchar(30)            null,    primary key (Row))DECLARE @Rows int,        @Row int        Set @Sql=' insert into #t Select ShortName,Spec,Spec1,Spec2,Spec3,Spec4 From [email protected]+'.dbo.ORDERDETAIL '+' Where SysOrderNo='+cast(@SysOrderNo as varchar(10))exec sp_executesql @Sqlset @Rows = @@ROWCOUNTset @Row = 1while (@Row<[email protected])begin    Select @ShortName = ShortName,@Spec = Spec,@Spec1 = Spec1,@Spec2 = Spec2,            @Spec3 = Spec3,@Spec4 = Spec4 from #T where Row = @Row    select @ShortName,@Spec,@Spec1,@Spec2,@Spec3,@Spec4    set @Row = @Row + 1end
  相关解决方案