日期在存储过程中合成查询语句的问题

星仔 2007-05-23 04:46:50
请问@BDate与@EDate传入后在Set语句中应该如何写才能不出错

ALTER proc Get_adjscx
(
@bt varchar(4),
@ddid varchar(30),
@zdid varchar(30),
@Bdate varchar(10),
@Edate varchar(10)
)
as
DECLARE @SqlStr varchar(200)
Set @SqlStr='select * from bl_idx where BDate>='+@BDate+' and Bdate<='+@EDate
select @SqlStr

if @bt<>''
Set @SqlStr=@SqlStr+' and bt=@bt'
if @ddid<>''
Set @SqlStr=@SqlStr+' and ddid=@ddid'
if @zdid<>''
Set @SqlStr=@SqlStr+' and zdid=@ddid'
exec(@SqlStr)
go

...全文
130 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellowork 2007-05-23
  • 打赏
  • 举报
回复
规定:日期要用单引号括起来,当字符串中有单引号时,必须将单引号换成二个单引号.
Set @SqlStr='select * from bl_idx where BDate>='''+@BDate+''' and Bdate<='''+@EDate + ''''
子陌红尘 2007-05-23
  • 打赏
  • 举报
回复
ALTER proc Get_adjscx
(
@bt varchar(4),
@ddid varchar(30),
@zdid varchar(30),
@Bdate varchar(10),
@Edate varchar(10)
)
as
DECLARE @SqlStr varchar(200)
Set @SqlStr='select * from bl_idx where BDate>='''+@BDate+''' and Bdate<='''+@EDate+''''
select @SqlStr

if @bt<>''
Set @SqlStr=@SqlStr+' and bt='+@bt
if @ddid<>''
Set @SqlStr=@SqlStr+' and ddid='+@ddid
if @zdid<>''
Set @SqlStr=@SqlStr+' and zdid='+@ddid
exec(@SqlStr)
go

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧