exec执行拼接SQL的疑问

散步的阿木 2011-07-20 01:22:26

set @sql1 = ' a,b,c '
set @sql2 = ' d,e,f '
exec('select' + @sql1 + @sql2 + 'from tablename order by a ')



set @sqlbegin = 'select'
set @sql1 = ' a,b,c '
set @sql2 = ' d,e,f '
set @sqlend = 'from tablename order by a '
exec(@sqlbegin + @sql1 + @sql2 + @sqlend )


求问以上的两个语句的区别。

举的是一个简单的例子,实际的问题,这是存储过程里拼接一个动态的SQL,因为@sql1,@sql2等加起来超过了8000个字符,那么EXEC里面,全部用变量拼接,和字符串和变量混合拼接的有区别么?
...全文
117 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
richardi 2011-07-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 qq32219893 的回复:]
SQL code


set @sql1 = ' a,b,c '
set @sql2 = ' d,e,f '
exec('select' + @sql1 + @sql2 + 'from tablename order by a ')




SQL code


set @sqlbegin = 'select'
set @sql1 = ' a,b,c '
set @s……
[/Quote]

2种写法没有区别,但是你写的有点问题,字段分割时少了一个逗号,要写成如下:

exec('select' + @sql1 + ',' + @sql2 + 'from tablename order by a ')
exec(@sqlbegin + @sql1 + ',' + @sql2 + @sqlend )

@sql1,@sql2等加起来超过了8000个字符没关系,你只要定义varchar类型变量时一个变量的值不要超过8000就行。


AcHerat 2011-07-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 qq32219893 的回复:]
SQL code

set @sql1 = ' a,b,c '
set @sql2 = ' d,e,f '
exec('select' + @sql1 + @sql2 + 'from tablename order by a ')




SQL code

set @sqlbegin = 'select'
set @sql1 = ' a,b,c '
set @sql2 ……
[/Quote]

楼主这样子写是没有结果的!


set @sql1 = ' a,b,c '
set @sql2 = ' d,e,f '
exec('select' + @sql1 + ',' + @sql2 + 'from tablename order by a ')

--or

set @sqlbegin = 'select'
set @sql1 = ' a,b,c '
set @sql2 = ' d,e,f '
set @sqlend = 'from tablename order by a '
exec(@sqlbegin + @sql1 + ',' + @sql2 + @sqlend )

--最后执行的SQL都是同一语句,结果集完全相同!
liangyong1107 2011-07-20
  • 打赏
  • 举报
回复
几乎没有什么区别,能实现需求,怎么用都行。。
--小F-- 2011-07-20
  • 打赏
  • 举报
回复
没有什么区别
cd731107 2011-07-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 qq32219893 的回复:]
SQL code

set @sql1 = ' a,b,c '
set @sql2 = ' d,e,f '
exec('select' + @sql1 + @sql2 + 'from tablename order by a ')




SQL code

set @sqlbegin = 'select'
set @sql1 = ' a,b,c '
set @sql2 ……
[/Quote]
没有区别,完全一样的
快溜 2011-07-20
  • 打赏
  • 举报
回复
结果是一样的。

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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