如何用字符变量传递查询条件?

sztony 2004-10-22 02:15:31
我有下列存储过程,想用变量来传递查询条件,不知道怎么办法?

CREATE PROCEDURE [query_purreq]
@wherestr varchar(2000) --接受外部查询条件
AS
select a.pur_pocode as '申购单号',
a.pur_co as '公司号',
b.spo_partno as '物料号',
c.ptn_cname as '物料名称' ,
c.ptn_spec as '物料规格' ,
b.spo_reqqty as '申请数量',
b.spo_reqdate as '要货日期'
from purreq a join purreqdtl b on a.pur_pocode = b.spo_pocode
join partno c on b.spo_partno = c.ptn_partno
where @wherestr --这里如何写???
GO
...全文
178 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldljlq 2004-10-22
  • 打赏
  • 举报
回复
建议直接用参数把查询条件传递进来,然后再根据参数生成一个SQL语句,exec(@sql)。
我一般喜欢这样做。
hisi 2004-10-22
  • 打赏
  • 举报
回复
exec ('select a.pur_pocode as ''申购单号'',
a.pur_co as ''公司号'',
b.spo_partno as ''物料号'',
c.ptn_cname as ''物料名称'' ,
c.ptn_spec as ''物料规格'' ,
b.spo_reqqty as ''申请数量'',
b.spo_reqdate as ''要货日期''
from purreq a join purreqdtl b on a.pur_pocode = b.spo_pocode
join partno c on b.spo_partno = c.ptn_partno
where' + @wherestr )


--或

exec sp_executesql N'select a.pur_pocode as ''申购单号'',
a.pur_co as ''公司号'',
b.spo_partno as ''物料号'',
c.ptn_cname as ''物料名称'' ,
c.ptn_spec as ''物料规格'' ,
b.spo_reqqty as ''申请数量'',
b.spo_reqdate as ''要货日期''
from purreq a join purreqdtl b on a.pur_pocode = b.spo_pocode
join partno c on b.spo_partno = c.ptn_partno
where' + cast(@wherestr as nvarchar(2000))
lsxaa 2004-10-22
  • 打赏
  • 举报
回复
exec('select ..... where '+@wherestr)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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