SqlServer存储过程实现及拼接sql的注意点

所属分类: 数据库 / MsSql 阅读数: 865
收藏 0 赞 0 分享

这里我昨天碰到的问题就是执行一段根据变量tableName对不同的表进行字段状态的更改。由于服务器原因,我不能直接在数据访问层写SQL,所以只好抽离出来放到存储过程里面。

这里就出现了一个问题,我花费了好久才弄通!

  其实就是很简单的一个SQL语句:

  update table1 set field1=value1,field2 = value2 where id = id

  我写成什么样子了呢?大家且看: 

declare @tableName nvarchar(50),
      @field1 int,
      @field2 nvarchar,
      @id int
  declare @sql nvarchar(max)
  set @sql = 'update '+@tableName+' set field1= '+@field1+',field2= '+@field2+' where id='+@id
  exec @sql 

  有过这方面经验的同学肯定知道这样写明显是错的,sql会报异常,说无法讲nvarchar转换成int类型

  那么这个错误是具体是值什么呢?其实就是说,在拼接sql的时候,这个@sql要是一个字符串类型,所有的变量也都必须用字符串表示,我上面的@field1和@id是int,所以要转化成nvarchar类型,并且是nvarchar类型的变量(字段)必须用单引号括起来;注:在sql中单引号是用两个单引号表示的

  所以经过修改,正确的拼接sql代码是:

set @sql='update '+@tableName+ ' set field1='+cast(@field1 as varchar)+',field2='''+@field2+''' where id='+CAST(@id as varchar) 

  这个问题其实非常简单,但是由于我在SQL方面的知识很是不足,所以在这里记录来巩固自己。

以上所述是小编给大家介绍的SqlServer存储过程实现及拼接sql的注意点,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

更多精彩内容其他人还在看

SqlServer存储过程实现及拼接sql的注意点

这篇文章主要介绍了SqlServer存储过程实现及拼接sql的注意点的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

MySQL 及 SQL 注入与防范方法

本文将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入的字符。解决SQL注入安全的问题解决,希望对大家有所帮助。
收藏 0 赞 0 分享

SQL Server中参数化SQL写法遇到parameter sniff ,导致不合理执行计划重用的快速解决方法

这篇文章主要介绍了SQL Server中参数化SQL写法遇到parameter sniff ,导致不合理执行计划重用的快速解决方法的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

SQL Server 2016正式版安装配置过程图文详解

这篇文章主要为大家详细介绍了SQL Server2016正式版安装配置过程图文教程,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

SQL Server 2016 CTP2.2安装配置方法图文教程

这篇文章主要为大家详细介绍了SQL Server 2016 CTP2.2安装配置方法图文教程 ,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

SQLServer主键和唯一约束的区别

这篇文章主要介绍了SQLServer主键和唯一约束的区别,需要的朋友可以参考下
收藏 0 赞 0 分享

SQL Server 创建约束图解(唯一 主键)

SQLServer中有五种约束,Primary Key约束、Foreign Key约束、Unique约束、Default约束和Check约束,今天使用SQL Server2008来演示下这几种约束的创建和使用的方法
收藏 0 赞 0 分享

SQL Server 获取服务器时间的sql语句

这篇文章主要介绍了SQL Server 获取服务器时间的sql语句,需要的朋友可以参考下
收藏 0 赞 0 分享

sql server几种Join的区别测试方法

这篇文章主要来介绍下Inner Join , Full Out Join , Cross Join , Left Join , Right Join的区别,需要的朋友可以参考下
收藏 0 赞 0 分享

SQL Server并行操作优化避免并行操作被抑制而影响SQL的执行效率

这篇文章主要介绍了SQL Server并行操作优化避免并行操作被抑制而影响SQL的执行效率 的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多