Sqlserver 动态sql查询语句的编写

在工作中遇到需要动态生成查询条件的问题,以前这类问题遇到的不多,但是现在的工作需要我重新考虑这一问题,大概的解决思路就是根据用户的输入或者选择拼接sql查询语句。

在编写的过程中我遇到了不少问题,罗列一下:

1、在一个存储过程中引用上一个存储过程生成的临时表,通过查询生成另一个临时表时,会报错。解决的方法就是使用全局临时表来保存数据。

@sql_string='select .......  into  ##temp_table2 from #temp_table1 where .....'

2、在临时表生成的字段命名出现类似于计算公式的字符时,sqlserver会认为这是一个计算公式而报错,例如时间区间 第一天到第三十天:1-30.使用字符串标注的形式进行区分:

select colname as '1-30',.... from tablename.

3、游标筛选参数表的记录时,如果一直是next的话,有可能会漏掉最后一条记录。例如参数表是账龄区间 billage

1-30         30

31-60       60

61-90       90

。。。

270-360  360

361     0

fetch first from cursor into @var

while @@fetch_status=0

  begin

     .....

     fetch next from cursor into @var

  end

这个例子中,游标走到361,会把361这条参数记录漏掉,






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值