求一多条件查询存储过程存储过程,传参变量为表的列名 随便 几个 最好大于三
能实现 用传参变量 传参 查询出对应的结果(查询结果结构还是下表结构)
一个能查出,多个也能查
表如下
YgGh YgZb YgBusyID YgPostID SzDz YgPw
11786 AJ.05.04 A04 003 SZ/深圳 SQ
10707 AY.03.12 A04 035 TS/唐山 WQN
10930 AJ.05.04 A04 034 SZ/深圳 JSF
12336 AE.12 A04 039 CD/成都 LY
10951 AE.02.01 A04 020 FZ/福州 WXQ
10520 AJ.05.04.02 A04 003 GZ/广州 XZB
10575 AY.08.03.01 A04 030 SY/沈阳 CW
10351 AJ.03 A04 049 ZZ/郑州 XL
10904 AJ.05.04.02 A04 003 GZ/广州 SLL
10557 AJ.10.05 A08 001 ST/汕头 ZJY
11624 AE.06.04 A04 003 WH/武汉 GLH
10705 AJ.05 A04 030 FZ/福州 LRC
12382 AY.08 A04 045 QD/青岛 ZPP
10958 AC.03 A04 010 FZ/福州 YXM
11171 AJ.02.03 A04 039 XM/厦门 WHP
10481 AJ.10.03 A04 045 GZ/广州 SJ
11644 AC.02 A04 010 FZ/福州 LLJ
11401 AJ.05.15 A04 001 FZ/福州 LXZ
11542 AJ.02.03 A04 033 XM/厦门 ZSN
11099 AJ.05.04 A04 061 SZ/深圳 ZXQ
能实现 用传参变量 传参 查询出对应的结果(查询结果结构还是下表结构)
一个能查出,多个也能查
表如下
YgGh YgZb YgBusyID YgPostID SzDz YgPw
11786 AJ.05.04 A04 003 SZ/深圳 SQ
10707 AY.03.12 A04 035 TS/唐山 WQN
10930 AJ.05.04 A04 034 SZ/深圳 JSF
12336 AE.12 A04 039 CD/成都 LY
10951 AE.02.01 A04 020 FZ/福州 WXQ
10520 AJ.05.04.02 A04 003 GZ/广州 XZB
10575 AY.08.03.01 A04 030 SY/沈阳 CW
10351 AJ.03 A04 049 ZZ/郑州 XL
10904 AJ.05.04.02 A04 003 GZ/广州 SLL
10557 AJ.10.05 A08 001 ST/汕头 ZJY
11624 AE.06.04 A04 003 WH/武汉 GLH
10705 AJ.05 A04 030 FZ/福州 LRC
12382 AY.08 A04 045 QD/青岛 ZPP
10958 AC.03 A04 010 FZ/福州 YXM
11171 AJ.02.03 A04 039 XM/厦门 WHP
10481 AJ.10.03 A04 045 GZ/广州 SJ
11644 AC.02 A04 010 FZ/福州 LLJ
11401 AJ.05.15 A04 001 FZ/福州 LXZ
11542 AJ.02.03 A04 033 XM/厦门 ZSN
11099 AJ.05.04 A04 061 SZ/深圳 ZXQ
create PROCEDURE [dbo].[proc_test]
(
@col1 varchar(10),
@col2 varchar(10),
@col3 varchar(10)
)
AS
BEGIN
SET NOCOUNT ON;
declare @sql varchar(1000)set @sql='select a'if isnull(@col1,'')<>''
set @sql=@sql+','+@col1
if isnull(@col2,'')<>''
set @sql=@sql+','+@col2
if isnull(@col3,'')<>''
set @sql=@sql+','+@col3set @sql=@sql+' from tb '
exec (@sql)END--调用例子,假定tb有a,b,c,d三列,exec proc_test 'b','','',sql 2005测试通过
--找一列,比如a作为必选列放在最开头
--然后判断传入参数是否有值,有值就拼sql,无值就pass...
--提供个思路而已,其他要加循环要加条件自己改就是了
(
@col1 varchar(10),
@col2 varchar(10),
@col3 varchar(10)
)
AS
BEGIN
declare @sql varchar(1000)
@sql='select a,'+isnull(@col1+',','')+isnull(@col2+',','')+isnull(@col3,'')+'from tb'
exec (@sql)
END
create PROCEDURE [dbo].[proc_test]
(
@col1 varchar(10),
@col2 varchar(10),
@col3 varchar(10)
)
AS
BEGIN
declare @sql varchar(1000)
@sql='select a'+isnull(','+@col1,'')+isnull(','+@col2,'')+isnull(','+@col3,'')+' from tb'
exec (@sql)
END