SQL Server数据库存储过程中拼接字符串注意的问题
2014-09-19 17:55
323 查看
在SQLServer数据库中书写复杂的存储过程时,一般的做法是拼接字符串,最后使用EXECsp_executesql'拼接的字符串'查询出结果。
先看一段代码:
然后调用该存储过程:EXECSp_GetStudentList1。结果如下:
运行失败。
仔细分析原因发现:存储过程参数@StudentId类型为INT(整形)型;而自定义变量@SqlSelectResult是NVARCHAR(MAX)字符串类型。
在23行,EXECsp_executesql@SqlSelectResult;执行拼接字符串时,报错,编译器尝试将字符串类型转换成int类型失败。
意思是:SQLServer中在拼接字符串时,所有的变量必须全部是字符串类型,才能正确拼接,否则报错。
解决方法1:将非字符串类型的变量转换为字符串类型,
[b]将18行代码修改为:[/b]
本篇完。
……
先看一段代码:
--============================================= --Author:XXX --Createdate:2014-09-19 --Description:获取学生列表信息 --============================================= ALTERPROCEDURE[dbo].[Sp_GetStudentList] @StudentIdINT--主键id AS BEGIN SETNOCOUNTON; DECLARE@SqlSelectResultNVARCHAR(MAX)=''; SET@SqlSelectResult='SELECT*FROMStudentASs'; IF(ISNULL(@StudentId,0)>0) BEGIN SET@SqlSelectResult=@SqlSelectResult+'WHEREs.ClassId>'+@StudentId; END PRINT(@SqlSelectResult); EXECsp_executesql@SqlSelectResult; SETNOCOUNTOFF; END
然后调用该存储过程:EXECSp_GetStudentList1。结果如下:
运行失败。
仔细分析原因发现:存储过程参数@StudentId类型为INT(整形)型;而自定义变量@SqlSelectResult是NVARCHAR(MAX)字符串类型。
在23行,EXECsp_executesql@SqlSelectResult;执行拼接字符串时,报错,编译器尝试将字符串类型转换成int类型失败。
意思是:SQLServer中在拼接字符串时,所有的变量必须全部是字符串类型,才能正确拼接,否则报错。
解决方法1:将非字符串类型的变量转换为字符串类型,
[b]将18行代码修改为:[/b]
SET@SqlSelectResult=@SqlSelectResult+'WHEREs.ClassId>'+convert(nvarchar(10),@StudentId); 解决方法2:在存储过程开始定义的时候,将参数定义为字符串类型
ALTERPROCEDURE[dbo].[Sp_GetStudentList] @StudentIdINT--主键id AS ……
本篇完。
技术研究方向:专注于Web(Mvc)开发框架、WinForm开发框架、项目(代码)自动化生成器、ORM等技术研究与开发应用 企业级项目经验:编务管理系统、印前管理系统、印务管理系统、图书销售管理系统、图书发行管理系统、图书馆管理系统、 数据交换平台、ERP综合管理平台 欢迎转载,请注明文章出处与链接信息。如果文章对您有帮助,请帮忙推荐,谢谢! 撰写人:张传宁 |
相关文章推荐
- 存储过程————执行拼接的SQL语句的字符串
- MFC中和libpq调用PostgreSQL存储过程需要注意的问题
- 网络传输过程过 大小端问题 注意字符串是不需要的
- 存储过程中操作了链接服务器时要注意的问题
- 存储过程中,goto语句和if else语句注意,标签的位置问题导致条件语句失效
- 使用SQL存储过程要特别注意的问题-注意顺序读取
- 关于Oracle存储过程中的IN子句传参的问题(不能直接传字符串,需要处理)
- MySQL存储过程里字符串拼接返回参数的方法
- SQLServer 存储过程中不拼接SQL字符串实现多条件查询
- 使用SQL存储过程要特别注意的问题-注意顺序读取
- 存储过程里使用select要注意的一个问题!
- SQLServer 存储过程中不拼接SQL字符串实现多条件查询
- SQLServer 存储过程中不拼接SQL字符串实现多条件查询
- SQLServer 存储过程中不拼接SQL字符串实现多条件查询
- 使用SQL存储过程要特别注意的问题-注意顺序读取
- .net调用数据库存储过程应当注意的问题
- 7.使用SQL存储过程要特别注意的问题[转]
- 执行字符串SQL语句--带有参数的存储过程以及 int类型的字符串变量注意事项
- oracle存储过程中异常处理应注意的问题
- SQLServer 存储过程中不拼接SQL字符串实现多条件查询