注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

hurt0759的个人主页

人生常态--跋涉.人生暂态--歇息.

 
 
 

日志

 
 

SQL游标中的糊糊查询问题.  

2011-04-26 21:12:08|  分类: IT |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

由于SQL.存储过程中,使用游标时,紧跟着后面的只能是SELECT ,UPDATE 等基本语句,无法对字符串进行运算.

尽管.

declare @txtkey as char(50)
set @txtkey='d'
declare @sql nvarchar(3000)

set @sql='select distinct(cp_chd_客户系编) from cp_出货单 LEFT OUTER JOIN
 cp_客户表 on cp_客户表.cp_khb_系统编号=cp_出货单.cp_chd_客户系编
where cp_chd_交易额<>0    and (cp_khb_公司 like'
begin
set @sql=rtrim(@sql+'  ''%'+rtrim(@txtkey)+'%''')
print @sql
end

这个能解决单引号问题,但它不能直接用于游标语句中,以下在网上找了一下资料,很不错的方法.

 

DECLARE @idLike varchar(50)
set @idLike='%'+@employeeIDin+'%'
DECLARE @nameLike varchar(50)
set @nameLike='%'+@employeeNameIN+'%'
DECLARE cur_employeeID CURSOR FOR SELECT EMPLOYEE_ID,EMPLOYEE_NAME,WHETHER_CHECK FROM EMPLOYEE_TABLE WHERE EMPLOYEE_ID LIKE @idLike AND EMPLOYEE_NAME LIKE @nameLike AND WHETHER_CHECK='1'

 

再如以下实例:

 


create PROC P_TEST
(@str1  datetime,--the begin day
@str2 as datetime,--the end day
@txtkey as char(50)--接收来自客户文本框中的值.
)
as
begin
declare  @strtcname varchar(2000), @selectdhhm char(11),@str0 char(20),@str3 char(20),@str4 char(20),@str5 char(20)
declare @info varchar(200)
declare @in varchar(200)
declare @idLike nvarchar(3000)
declare @curs cursor
set @idLike='%'+rtrim(@txtkey)+'%'
if @txtkey <>''
begin
set @curs=cursor scroll dynamic
for
select distinct(cp_chd_客户系编) from cp_出货单 LEFT OUTER JOIN  cp_客户表 on cp_客户表.cp_khb_系统编号=cp_出货单.cp_chd_客户系编 where cp_chd_交易额<>0 and cp_chd_建单时间> @str1 and  cp_chd_建单时间< @str2 and (cp_khb_公司) like @idLike
end
else
begin
set @curs=cursor scroll dynamic
for
 select distinct(cp_chd_客户系编) from cp_出货单 where cp_chd_交易额<>0  and cp_chd_建单时间> @str1 and  cp_chd_建单时间< @str2
end
open @curs
fetch next from @curs into @info
while(@@fetch_status=0)
begin
 set @str0=@info --用于接收客户编号的值.
set @str3=' order by 编号 '--可有可无
set @str4='0'
exec 应收款查询mm   @过滤语句= @str0,@排序= @str3,@小=@str1,@大=@str2 ,@显示利润=@str4
fetch next from @curs into @info
end
exec (' select  rtrim(公司) as 客户名称,结算货币,Convert(decimal(18,2),上期结余) as 上期结余,Convert(decimal(18,2),出货) as 出货,Convert(decimal(18,2),出货退货) as 出货退货,Convert(decimal(18,2),出货折扣) as 出货折扣,Convert(decimal(18,2),收款) as 收款,Convert(decimal(18,2),增加应收款) as 增加应收款,Convert(decimal(18,2),减少应收款) as 减少应收款,Convert(decimal(18,2),出货成本) as 出货成本,Convert(decimal(18,2),出货退货成本) as 出货退货成本, Convert(decimal(18,2),期未余额) as 期末余额  from get_money ' + ' order by 编号 ')
delete from get_money
end

  评论这张
 
阅读(392)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017