动态SQL 语句.

andyhooo 2008-05-28 05:59:41
1
declare @num int, 
@sqls nvarchar(4000)
set @sqls='select count(*) from tablename'
exec(@sqls)


2
declare @num int, 
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tablename'
exec sp_executesql @sqls,N'@a int output',@num output
select @num


输出一样的?

2 中的那个 输出变量要这么复杂的?@a在那里动态语句赋值了,为啥还用@num这个中间变量再输出output?
还有@a怎么不declare声明的?好像动态sql规则好不规范

...全文
86 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhiguo2008 2008-05-29
  • 打赏
  • 举报
回复
支持
chenjunsheep 2008-05-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 Herb2 的回复:]
按顺序
[/Quote]
律己修心 2008-05-29
  • 打赏
  • 举报
回复
N'@a int output,@b int output',@num1 output,@num2 output 
@a ⇒@num1
@b ⇒@num2

N'@a int output,@b int output',@num2 output,@num1 output

@a ⇒@num2
@b ⇒@num1


按声明变量的顺序对应输出
Herb2 2008-05-29
  • 打赏
  • 举报
回复
按顺序
律己修心 2008-05-29
  • 打赏
  • 举报
回复
按顺序赋值

自己比较结果

declare @num1 int,@num2 int, @sqls nvarchar(4000) 
set @sqls='select @a=count(*) ,@b=min(ID) from master.dbo.sysobjects'
exec sp_executesql @sqls,N'@a int output,@b int output',@num1 output,@num2 output
select @num1,@num2
go
declare @num1 int,@num2 int, @sqls nvarchar(4000)
set @sqls='select @a=count(*) ,@b=min(ID) from master.dbo.sysobjects'
exec sp_executesql @sqls,N'@a int output,@b int output',@num2 output,@num1 output
select @num1,@num2
andyhooo 2008-05-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 andyhooo 的回复:]
SQL codedeclare @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tablename'
exec sp_executesql @sqls,N'@a int output',@num output
select @num



如果 有多个变量呢?怎么知道@num对应的是@a呢?

比如.exec sp_executesql @sqls,N'@a int output',@num output,N'@b int output',@num2 output.怎样知道

哪个变量呢?
[/Quote]
自己up.
andyhooo 2008-05-29
  • 打赏
  • 举报
回复
declare @num int, 
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tablename'
exec sp_executesql @sqls,N'@a int output',@num output
select @num


如果 有多个变量呢?怎么知道@num对应的是@a呢?

比如.exec sp_executesql @sqls,N'@a int output',@num output,N'@b int output',@num2 output.怎样知道

哪个变量呢?
Limpire 2008-05-28
  • 打赏
  • 举报
回复
N'@a int output',@num output
------------
这里定义(declare)了
liangCK 2008-05-28
  • 打赏
  • 举报
回复
1.只是执行了一个查询..没有将这个结果赋值给变量 ..
2.这是sp_executesql的写法.
Limpire 2008-05-28
  • 打赏
  • 举报
回复
但第一种写法无法将输出放到变量,只能看,这是区别所在。
Limpire 2008-05-28
  • 打赏
  • 举报
回复
输出是一样的

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧