declare @Sql nvarchar(500)
declare @SysOrderNo int
declare @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 '+@DataBaseName+'.dbo.ORDERDETAIL '+' Where SysOrderNo='+cast(@SysOrderNo as varchar(10))
Select @Sql
exec sp_executesql @Sql,N'@ShortName 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 output
Select @ShortName,@Spec,@Spec1,@Spec2,@Spec3,@Spec4
代码执行后结果框里显示一行@ShortName,@Spec,@Spec1,@Spec2,@Spec3,@Spec4记录
问题在于:
1程序这里只能用exec(@Sql)的形式
2要取出返回值单纯执行SQL语句返回【3】条记录,但是用exec sp_executesql却只有【1】条,帮助文档里说可以用游标,但是怎么弄都不对,求帮助
解决方案 »
- 更新(金额=数量*单价)很慢的问题
- 请教一个sql查询语句的写法
- 小弟问个sql的简单的知识,关于把一个表的数据集插入到另外一个表中
- 求一sql语句:提取table1表中type=1的前十条记录和type=2的前十条记录
- 关于SQL语句的问题(急切求教中)
- 数据库表中公式设计自动计算月平均数问题,请高手帮忙,谢谢!
- 一个很菜的问题:从速SQL SERVER 中导出的sql语句中ON [PRIMARY]有什么作用
- 如何创建基于时间的触发器??
- 在一个建了一个自动编号的字段C1的表T中,如何插入1000条记录到字段C1?
- SQL SERVER2000 和SQL SERVER 7.0 哪 个版本高一点!!! 哪 个更好一点?
- 在vf中,怎样通过sql语句将 纵列的成绩改成横列的?
- sql中有没有集合的概念?关于sql的递归查询,求高人点化下。
declare @SysOrderNo int
declare @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=5
create 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 '+@DataBaseName+'.dbo.ORDERDETAIL '+' Where SysOrderNo='+cast(@SysOrderNo as varchar(10))
exec sp_executesql @Sql
set @Rows = @@ROWCOUNT
set @Row = 1
while (@Row<=@Rows)
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 + 1
end