手机
当前位置:查字典教程网 >编程开发 >mssql数据库 >SqlServer存储过程实现及拼接sql的注意点
SqlServer存储过程实现及拼接sql的注意点
摘要:这里我昨天碰到的问题就是执行一段根据变量tableName对不同的表进行字段状态的更改。由于服务器原因,我不能直接在数据访问层写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方面的知识很是不足,所以在这里记录来巩固自己。

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

【SqlServer存储过程实现及拼接sql的注意点】相关文章:

Sql Server 存储过程实例讲解

SqlServer创建存储过程

SQLServer中的存储过程

Sql Server 2000 行转列的实现(横排)

SQL Server扩展存储过程实现远程备份与恢复

SQL Server 表交叉显示及实现方法

sqlserver 2000 远程连接 服务器的解决方案

sqlserver 复制表 复制数据库存储过程的方法

SQL存储过程实现SPSS交叉表

SQL Server数据库中的存储过程介绍

精品推荐
分类导航