200分征答:如何在存储过程中实现动态过滤条件的查询

jnyezhi 2004-01-05 08:43:15
写程序的时候经常会用到不确定条件的查询,过滤条件可能有一个,也可能有N个,还有可能一个都没有。不用存储过程的时候可以动态的生成SQL语句来实现动态过滤,比如下面代码:
a=request("a")
b=request("b")

if a="" then
sql_a="1=1"
else
sql_a="filed_a="&a
end if

if b="" then
sql_b="1=1"
else
sql_b="filed_b="&b
end if

sql="select * from table_name where "&sql_a&" and "&sql_b

……

但在存储过程中我却不知道该如何实现类似的功能,在GOOGLE上和CSDN的ASP版面搜索了几天也没有找到答案,希望各位高手给点方法或思路,在下感激不尽!
...全文
47 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xieyj 2004-01-05
  • 打赏
  • 举报
回复
select 或 set 在SQL中是对一个变量赋值。
jnyezhi 2004-01-05
  • 打赏
  • 举报
回复
问:tdl982324(石井坚)

if @a=""
select @sSql_a="1=1"
else
select @sSql_a="filed_a="+@a
end if

上面代码中变量前面的select是必须的吗?表示什么意思?
不要笑我啊,存储过程我没有专门学过。
jnyezhi 2004-01-05
  • 打赏
  • 举报
回复
晕,200分也没必要这么激动啊?^_^
xieyj 2004-01-05
  • 打赏
  • 举报
回复
楼上的快晕了...
Reker熊 2004-01-05
  • 打赏
  • 举报
回复
天,怎麼回覆這麼多次
Reker熊 2004-01-05
  • 打赏
  • 举报
回复
傳入兩個參數@a,@b

declare @sSql varchar(2000)
declare @sSql_a varchar(200)
declare @sSql_b varchar(200)
if @a=""
select @sSql_a="1=1"
else
select @sSql_a="filed_a="+@a
end if

if @b=""
select @sSql_b="1=1"
else
select @sSql_b="filed_b="+@b
end if

select @sSql="select * from table_name where "+@sSql_a+" and "+@sSql_b
exec(@sSql)
Reker熊 2004-01-05
  • 打赏
  • 举报
回复
傳入兩個參數@a,@b

declare @sSql varchar(2000)
declare @sSql_a varchar(200)
declare @sSql_b varchar(200)
if @a=""
select @sSql_a="1=1"
else
select @sSql_a="filed_a="+@a
end if

if @b=""
select @sSql_b="1=1"
else
select @sSql_b="filed_b="+@b
end if

select @sSql="select * from table_name where "+@sSql_a+" and "+@sSql_b
exec(@sSql)
Reker熊 2004-01-05
  • 打赏
  • 举报
回复
傳入兩個參數@a,@b

declare @sSql varchar(2000)
declare @sSql_a varchar(200)
declare @sSql_b varchar(200)
if @a=""
select @sSql_a="1=1"
else
select @sSql_a="filed_a="+@a
end if

if @b=""
select @sSql_b="1=1"
else
select @sSql_b="filed_b="+@b
end if

select @sSql="select * from table_name where "+@sSql_a+" and "+@sSql_b
exec(@sSql)
Reker熊 2004-01-05
  • 打赏
  • 举报
回复
傳入兩個參數@a,@b

declare @sSql varchar(2000)
declare @sSql_a varchar(200)
declare @sSql_b varchar(200)
if @a=""
select @sSql_a="1=1"
else
select @sSql_a="filed_a="+@a
end if

if @b=""
select @sSql_b="1=1"
else
select @sSql_b="filed_b="+@b
end if

select @sSql="select * from table_name where "+@sSql_a+" and "+@sSql_b
exec(@sSql)
Reker熊 2004-01-05
  • 打赏
  • 举报
回复
傳入兩個參數@a,@b

declare @sSql varchar(2000)
declare @sSql_a varchar(200)
declare @sSql_b varchar(200)
if @a=""
select @sSql_a="1=1"
else
select @sSql_a="filed_a="+@a
end if

if @b=""
select @sSql_b="1=1"
else
select @sSql_b="filed_b="+@b
end if

select @sSql="select * from table_name where "+@sSql_a+" and "+@sSql_b
exec(@sSql)
xieyj 2004-01-05
  • 打赏
  • 举报
回复
可以在外面得到条件,在存储过程里使用一个参数带入即可执行,我的 qq :83537009

可以与我联系。

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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