动态语句SQL语句写法

Posted 覆雨翻云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态语句SQL语句写法相关的知识,希望对你有一定的参考价值。

  1. /******************************************************************************************************************************************************
  2. 动态语句语法:exec/sp_executesql语法
  3. 整理人:中国风(Roy)
  4. 日期:2008.06.06
  5. ******************************************************************************************************************************************************/
  6. 动态语句语法:
  7. --方法1查询表改为动态
  8. select * from sysobjects
  9. exec(‘select ID,Name from sysobjects‘)
  10. exec sp_executesql N‘select ID,Name from sysobjects‘--多了一个N为unicode
  11. --方法2:字段名,表名,数据库名之类作为变量时,用动态SQL 
  12. declare @FName varchar(20)
  13. set @FName=‘ID‘
  14. exec(‘select ‘[email protected]+‘ from sysobjects where ‘[email protected]+‘=5‘ )
  15. declare @s varchar(1000)
  16. set @s=N‘select ‘[email protected]+‘ from sysobjects where ‘[email protected]+‘=5‘
  17. exec sp_executesql @s--会报错
  18. declare @s nvarchar(1000)--改为nvarchar
  19. set @s=N‘select ‘[email protected]+‘ from sysobjects where ‘[email protected]+‘=5‘
  20. exec sp_executesql @s--成功
  21. --方法3:输入参数
  22. declare @i int,@s nvarchar(1000)
  23. set @i=5
  24. exec(‘select ID,Name from sysobjects where ID=‘[email protected])
  25. set @s=‘select ID,Name from sysobjects where [email protected]
  26. exec sp_executesql @s,N‘@i int‘,@i--此处输入参数要加上N
  27. --方法4:输出参数
  28. declare @i int,@s nvarchar(1000)
  29. set @s=‘select @i=count(1) from sysobjects‘
  30. --用exec
  31. exec(‘declare @i int ‘[email protected]+‘ select @i‘)--把整个语句用字符串加起来执行
  32. --用sp_executesql
  33. exec sp_executesql @s,N‘@i int output‘,@i output--此处输出参数要加上N
  34. select @i
  35. --方法5:输入输出
  36. --用sp_executesql
  37. declare @i int,@con int,@s nvarchar(1000)
  38. set @i=5
  39. select @s=‘select @con=count(1) from sysobjects where ID>@i‘
  40. exec sp_executesql @s,N‘@con int output,@i int‘,@con output ,@i 
  41. select @con
  42. --用exec
  43. declare @i int,@s nvarchar(1000)
  44. set @i=5
  45. select @s=‘declare @con int select @con=count(1) from sysobjects where ID>‘+rtrim(@i)+‘ select @con‘
  46. exec(@s)

http://blog.csdn.net/roy_88/article/details/3020586

以上是关于动态语句SQL语句写法的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句中where条件的写法

MyBatis中SQL写法总结

动态SQL语句:Mybaties SqlProvider

sql语句中一下子删除两个id的写法?

shell脚本中sql语句得到一个值,赋值给变量出错

Asp.net中SQL语句的写法