22.动态SQL语句处理常见问题案例

╰半橙微兮° 2024-02-19 17:47 104阅读 0赞
  1. --1.数据类型转换的问题
  2. DECLARE @value int
  3. SET @value=100
  4. DECLARE @sql varchar(8000)
  5. SET @sql='SELECT * FROM tbname WHERE col='+@value
  6. EXEC(@sql)
  7. GO
  8. /*======================================================*/
  9. --2.字符串边界符的问题
  10. DECLARE @value varchar(10)
  11. SET @value='aa'
  12. DECLARE @sql1 varchar(8000),@sql2 varchar(8000),@sql3 varchar(8000)
  13. SET @sql1='SELECT * FROM tbname WHERE col1='+@value
  14. SET @sql2='SELECT * FROM tbname WHERE col1=''+@value+'
  15. SET @sql3='SELECT * FROM tbname WHERE col1='''+@value+''''
  16. GO
  17. DECLARE @value varchar(10)
  18. SELECT @value='a''a'
  19. DECLARE @sql varchar(8000)
  20. SET @sql='SELECT * FROM tbname WHERE col='''+@value+''''
  21. EXEC(@sql)
  22. GO
  23. /*======================================================*/
  24. --3.表名及字段名的问题
  25. DECLARE @tbname sysname
  26. SET @tbname='sysobjects'
  27. SELECT * FROM @tbname
  28. GO
  29. DECLARE @tbname sysname
  30. SET @tbname='sysobjects'
  31. EXEC sp_executesql N'SELECT * FROM @tbname',N'@tbname sysname',@tbname
  32. GO
  33. /*======================================================*/
  34. --4.返回值的问题
  35. DECLARE @tbname sysname,@sql varchar(100)
  36. SET @sql='SELECT @tbname=name FROM sysobjects where id=1'
  37. EXEC(@sql)
  38. SELECT @tbname
  39. GO
  40. DECLARE @tbname sysname,@sql varchar(100)
  41. SET @sql='SELECT '+@tbname+'=name FROM sysobjects where id=1'
  42. EXEC(@sql)
  43. SELECT @tbname

发表评论

表情:
评论列表 (有 0 条评论,104人围观)

还没有评论,来说两句吧...

相关阅读

    相关 动态SQL语句

    动态SQL语句 Mybatis 的动态 SQL 语句 Mybatis 的映射文件中,前面我们的 SQL 都是比较简单的, 有些时候业务逻辑复杂时

    相关 【PB】动态SQL语句

    所谓动态SQL语句是指部分或者整个SQL语句在运行时才能确定,这样的SQL语句可以用来设计能和用户进行更好交互的界面。因为参数的确定留给用户总比编程时由开发人员规定死要好得多。

    相关 MyBatis动态SQL语句

    在Mapper配置文件中,有时候需要根据一些查询条件来选择不同的SQL语句,或者将一些使用频率高的SQL语句单独配置,在需要的地方引用。MyBatis提供了一种可以根据条件动态