码迷,mamicode.com
首页 > 数据库 > 详细

使用表达式避免拼接SQL语句

时间:2014-05-17 01:22:33      阅读:312      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   c   java   

在SQL语句编写过程中,无论在存储过程中还是在程序中,有时为了使语句兼容全部情况与某字段的特殊情况,不得不拼接SQL字串

如下表

商品ID 类别ID
1 1
2 1
3 2
4 3
5 3

如果我们要写一个SQL,改SQL可通过类别ID获得该类别的商品ID,并且要求兼容传入类别ID为0时获得所有商品,我们不得不拼接SQL了

bubuko.com,布布扣
--@类别ID为传入的参数
DECLARE @Sql NVARCHAR(500)
SET @Sql=SELECT * FROM 商品
IF(@类别ID!=0)
    SET @Sql=@Sql+WHERE 类别ID=+Cast@类别ID as NVARCHAR(20))
EXEC (@Sql)
bubuko.com,布布扣

这样的方法不仅要对数据类型转换、引号配对而且语法检查也需要通过PRINT语句输出后进行检查,最要命的是如果拼接的语句是对临时表操作,由于EXEC是独立上下文运行的,导致外部无法访问拼接语句生成的临时表

其实可以通过表达式优化这句SQL,写成如下形式即可避免拼接SQL

bubuko.com,布布扣
SELECT * FROM 商品 WHERE @类别ID=0 OR 类别ID=@类别ID
bubuko.com,布布扣

 

 

 

使用表达式避免拼接SQL语句,布布扣,bubuko.com

使用表达式避免拼接SQL语句

标签:style   blog   class   code   c   java   

原文地址:http://www.cnblogs.com/overload/p/3724890.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!