分类

链接

2011 年 11 月
 123456
78910111213
14151617181920
21222324252627
282930  

近期文章

热门标签

新人福利,免费薅羊毛

现在位置:    首页 > MySQL, SQL Server > 正文
共享办公室出租
SQL动态参数
MySQL, SQL Server 暂无评论 阅读(1,804)

  1. --1. 使用 EXEC 实现的动态参数存储过程
  2. CREATE PROC p_test
  3. @para1 varchar(10)=null,
  4. @para2 varchar(10)=null,
  5. @para3 varchar(10)=null,
  6. @para4 varchar(10)=null
  7. AS
  8. SET NOCOUNT ON
  9. DECLARE @sql varchar(8000)
  10. SET @sql='SELECT * FROM tbname WHERE 1=1'
  11. IF @para1 IS NOT NULL
  12.     SET @sql=@sql+' AND col1='''+@para1+''''
  13. IF @para2 IS NOT NULL
  14.     SET @sql=@sql+' AND col2='''+@para2+''''
  15. IF @para3 IS NOT NULL
  16.     SET @sql=@sql+' AND col3='''+@para3+''''
  17. IF @para4 IS NOT NULL
  18.     SET @sql=@sql+' AND col4='''+@para4+''''
  19. EXEC(@sql)
  20. GO
  21.  
  22.  
  23. /*======================================================*/
  24.  
  25. --2. 使用 sp_executesql 实现的动态参数存储过程
  26. CREATE PROC p_test
  27. @para1 varchar(10)=null,
  28. @para2 datetime=null,
  29. @para3 varchar(10)=null,
  30. @para4 int=null
  31. AS
  32. SET NOCOUNT ON
  33. DECLARE @sql nvarchar(4000)
  34. SET @sql='SELECT * FROM tbname WHERE 1=1'
  35.     +CASE WHEN @para1 IS NULL THEN '' ELSE ' AND col1=@para1' END
  36.     +CASE WHEN @para2 IS NULL THEN '' ELSE ' AND col2=@para2' END
  37.     +CASE WHEN @para3 IS NULL THEN '' ELSE ' AND col3=@para3' END
  38.     +CASE WHEN @para4 IS NULL THEN '' ELSE ' AND col4=@para4' END
  39. EXEC sp_executesql @sql,N'
  40.     @para1 varchar(10)=null,
  41.     @para2 datetime=null,
  42.     @para3 varchar(10)=null,
  43.     @para4 int=null
  44. ',@para1,@para2,@para3,@para4
  45. GO
  46.  
  47.  
  48. /*======================================================*/
  49.  
  50. --3. 不使用动态 Transact-SQL 语句实现的动态参数存储过程
  51. CREATE PROC p_test
  52. @para1 varchar(10)=null,
  53. @para2 datetime=null,
  54. @para3 varchar(10)=null,
  55. @para4 int=null
  56. AS
  57. SET NOCOUNT ON
  58. SELECT * FROM tbname 
  59. WHERE (@para1 IS NULL OR col1=@para1)
  60.     AND (@para2 IS NULL OR col2=@para2)
  61.     AND (@para3 IS NULL OR col3=@para3)
  62.     AND (@para4 IS NULL OR col4=@para4)

============ 欢迎各位老板打赏~ ===========

本文版权归Bruce's Blog所有,转载引用请完整注明以下信息:
本文作者:Bruce
本文地址:SQL动态参数 | Bruce's Blog

发表评论

留言无头像?