+ -
当前位置:首页 → 问答吧 → 存储过程 条件不固定 怎么写?

存储过程 条件不固定 怎么写?

时间:2011-12-01

来源:互联网

目前的SQL语句:

select * from [house] as m where exists (select 1 from [fields] where [houseid]=[m].[id] and [fieldid]='mianji' and [fielddata]<=50) and exists (select 1 from [fields] where [houseid]=[m].[id] and [fieldid]='huxing' and [fielddata]=2) ……(这里可能还有更多条件) order by [id] desc


意为查找符合条件的房屋信息,面积小于50,户型等于2,还有所在楼层、总楼层……等等 需要动态生成的SQL语句。

转成存储过程该怎么弄 高手指教。

作者: cdalinshi   发布时间: 2011-12-01

将条件做成参数,传入存储过程,在存储过程里拼动态查询语句,再执行查询.

作者: qianjin036a   发布时间: 2011-12-01

我找找你说的东西,刚刚接触存储过程这玩意,有没有能帮忙写个完整的实例呀 摸不清头绪

作者: cdalinshi   发布时间: 2011-12-01

存储过程中用参数 把你所有的条件都设置成参数 
条件中写 条件=条件 OR 条件 = 0
传入的时候没有参数就设成零  
语句我就不写了 给你个语句自己看看
SQL code
create proc pr_test
@p1 int = null
,@p2 int = null
,@p3 varchar(10) = null
,@p4 varchar(10) = null
as

select *
from test
where (@p1 is null or f1=@p1)
and (@p2 is null or f2=@p2)
and (@p3 is null or f3=@p3)
and (@p4 is null or f4=@p4)

作者: yhui1989love   发布时间: 2011-12-01

exec('select * from tb where '+@wherestr)

作者: ssp2009   发布时间: 2011-12-01

存储过程里掉用

sp_executesql

作者: WaterMM   发布时间: 2011-12-01

……(这里可能还有更多条件)
具体是些什么条件??如果是动态的 都可以写成参数

然后动态拼接。

作者: fredrickhu   发布时间: 2011-12-01

谢谢各位 我研究研究 刚刚接触存储过程这玩意 看了几篇文章 看的脑袋疼 以为很复杂 就特来此请教

作者: cdalinshi   发布时间: 2011-12-01