存储过程多条件查询

来源:互联网 发布:什么软件可以去掉原唱 编辑:程序博客网 时间:2024/05/01 07:38

动态组合条件:   
   

  1. create proc aaa   
  2.     @width decimal(18,2),   
  3.     @height decimal(18,2),   
  4.     @length decimal(18,2),   
  5.     @scope decimal(18,2)   
  6. AS   
  7. declare @s nvarchar(4000)   
  8. set @s=
  9. case   
  10.     when @width is not null then ' and widthb<=@width and widthe>@width'   
  11.     else ''   
  12. end
  13.  + 
  14. case
  15.     when @length is not null then ' and lengthb<=@length and lengthe>@length'   
  16.     else '' 
  17. end
  18. if @s=''   
  19.     set @s='select * from 表'   
  20. else   
  21.     set @s='select * from 表 where '+substring(@s,5,4000)   
  22. exec sp_executesql 
  23.     @s,
  24.     N'width decimal(18,2),
  25.     @height decimal(18,2),
  26.     @length decimal(18,2),
  27.     @scope decimal(18,2)',
  28.     @width,@height,@length,@scope   
  29. go

转自:http://topic.csdn.net/t/20031229/09/2612554.html

 

自己来写一个笨笨的存储过程! 第一个哦

  1. CREATE PROCEDURE dbo.GetAllEmployeeWithCondition 
  2.     (
  3.     @emp_name nvarchar(20),
  4.     @emp_post nvarchar(10),
  5.     @emp_id nvarchar(20),
  6.     @emp_joindate1 datetime,
  7.     @emp_joindate2 datetime,
  8.     @blur bit
  9.     )
  10.     
  11. AS
  12.     DECLARE @op1 nvarchar(4)
  13.     DECLARE @condition nvarchar(200)
  14.     SET @condition = ''
  15.     IF @blur = 1
  16.     BEGIN
  17.         IF @emp_name IS NOT NULL
  18.         BEGIN
  19.             SET @condition = @condition + ' emp_name LIKE ''%'' + @emp_name + ''%'' AND '
  20.         END
  21.         IF @emp_post IS NOT NULL
  22.         BEGIN
  23.             SET @condition = @condition + ' emp_post LIKE ''%'' + @emp_post + ''%'' AND '
  24.         END
  25.         IF @emp_id IS NOT NULL
  26.         BEGIN
  27.             SET @condition = @condition + ' emp_id LIKE ''%'' + @emp_id + ''%'' AND '
  28.         END
  29.     END
  30.     ELSE
  31.     BEGIN
  32.         IF @emp_name IS NOT NULL
  33.         BEGIN
  34.             SET @condition = @condition + ' emp_name=@emp_name AND '
  35.         END
  36.         IF @emp_post IS NOT NULL
  37.         BEGIN
  38.             SET @condition = @condition + ' emp_post=@emp_post AND '
  39.         END
  40.         IF @emp_id IS NOT NULL
  41.         BEGIN
  42.             SET @condition = @condition + ' emp_id=@emp_id AND '
  43.         END
  44.     END
  45.     IF @emp_joindate1 IS NOT NULL 
  46.     BEGIN
  47.         SET @condition = @condition + ' emp_joindate>=@emp_joindate1 AND '
  48.     END
  49.     IF @emp_joindate2 IS NOT NULL 
  50.     BEGIN
  51.         SET @condition = @condition + ' emp_joindate<=@emp_joindate2 AND '
  52.     END
  53.     DECLARE @str nvarchar(200)
  54.     IF @condition <> ''
  55.     BEGIN
  56.         SET @condition = substring(@condition, 0, len(@condition) - 3)
  57.         SET @str = 'SELECT * FROM [employee] WHERE' + @condition
  58.         EXEC sp_executesql 
  59.         @str,
  60.         N'@emp_name nvarchar(20), 
  61.         @emp_post nvarchar(10), 
  62.         @emp_id nvarchar(20), 
  63.         @emp_joindate1 datetime, 
  64.         @emp_joindate2 datetime',
  65.         @emp_name, @emp_post, @emp_id, @emp_joindate1, @emp_joindate2
  66.     END
  67.     ELSE
  68.     BEGIN
  69.         SELECT * FROM [employee]
  70.     END
  71.     RETURN
原创粉丝点击