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

作者:沉睡的木木夕 时间:2024-01-24 17:12:17 

这里我昨天碰到的问题就是执行一段根据变量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
0
投稿

猜你喜欢

  • Spark中的数据读取保存和累加器实例详解

    2022-09-13 19:26:46
  • Python画图实现同一结点多个柱状图的示例

    2021-04-21 23:26:04
  • MySQL最好的优化技巧

    2009-10-27 12:05:00
  • AJAX 自学练习 无刷新提交并修改数据库数据并显示

    2024-01-18 20:21:23
  • Go语言中的Array、Slice、Map和Set使用详解

    2023-06-24 07:29:03
  • mysql共享锁与排他锁用法实例分析

    2024-01-20 15:15:26
  • 浅谈利用numpy对矩阵进行归一化处理的方法

    2021-10-12 01:22:41
  • php实现压缩多个CSS与JS文件的方法

    2023-11-23 08:39:59
  • asp 通用修改和增加函数代码

    2011-03-16 11:15:00
  • 对python3中的RE(正则表达式)-详细总结

    2022-12-28 23:33:41
  • Python教程之Python多态的深层次理解

    2021-07-30 07:50:53
  • Asp.net实现简单的文字水印

    2007-08-24 09:28:00
  • 让ASP也支持动态include文件

    2008-05-08 13:00:00
  • 如何给 legend 标签设定宽度

    2008-07-26 12:18:00
  • 设定sql server定期自动备份数据库

    2024-01-16 18:14:30
  • python打印当前文件的绝对路径并解决打印为空的问题

    2023-10-26 16:24:00
  • MySQL中数据查询语句整理大全

    2024-01-15 21:59:05
  • mysql中模糊查询的四种用法介绍

    2024-01-23 17:03:02
  • python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别

    2023-09-07 18:25:35
  • 手把手教你使用Python创建微信机器人

    2022-02-11 14:12:29
  • asp之家 网络编程 m.aspxhome.com