SqlServer存储过程实现及拼接sql的注意点
这⾥我昨天碰到的问题就是执⾏⼀段根据变量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⽅⾯的知识很是不⾜,所以在这⾥记录来巩固⾃⼰。
sql server拼接字符串函数
以上所述是⼩编给⼤家介绍的SqlServer存储过程实现及拼接sql的注意点,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。