博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动态参数的存储过程示例.sql
阅读量:6901 次
发布时间:2019-06-27

本文共 1568 字,大约阅读时间需要 5 分钟。

--1. 使用 EXEC 实现的动态参数存储过程
CREATE PROC p_test
@para1 varchar(10)=null,
@para2 varchar(10)=null,
@para3 varchar(10)=null,
@para4 varchar(10)=null
AS
SET NOCOUNT ON
DECLARE @sql varchar(8000)
SET @sql='SELECT * FROM tbname WHERE 1=1'
IF @para1 IS NOT NULL
    SET @sql=@sql+' AND col1='''+@para1+''''
IF @para2 IS NOT NULL
    SET @sql=@sql+' AND col2='''+@para2+''''
IF @para3 IS NOT NULL
    SET @sql=@sql+' AND col3='''+@para3+''''
IF @para4 IS NOT NULL
    SET @sql=@sql+' AND col4='''+@para4+''''
EXEC(@sql)
GO
/*======================================================*/
--2. 使用 sp_executesql 实现的动态参数存储过程
CREATE PROC p_test
@para1 varchar(10)=null,
@para2 datetime=null,
@para3 varchar(10)=null,
@para4 int=null
AS
SET NOCOUNT ON
DECLARE @sql nvarchar(4000)
SET @sql='SELECT * FROM tbname WHERE 1=1'
    +CASE WHEN @para1 IS NULL THEN '' ELSE ' AND col1=@para1' END
    +CASE WHEN @para2 IS NULL THEN '' ELSE ' AND col2=@para2' END
    +CASE WHEN @para3 IS NULL THEN '' ELSE ' AND col3=@para3' END
    +CASE WHEN @para4 IS NULL THEN '' ELSE ' AND col4=@para4' END
EXEC sp_executesql @sql,N'
    @para1 varchar(10)=null,
    @para2 datetime=null,
    @para3 varchar(10)=null,
    @para4 int=null
',@para1,@para2,@para3,@para4
GO
/*======================================================*/
--3. 不使用动态 Transact-SQL 语句实现的动态参数存储过程
CREATE PROC p_test
@para1 varchar(10)=null,
@para2 datetime=null,
@para3 varchar(10)=null,
@para4 int=null
AS
SET NOCOUNT ON
SELECT * FROM tbname
WHERE (@para1 IS NULL OR col1=@para1)
    AND (@para2 IS NULL OR col2=@para2)
    AND (@para3 IS NULL OR col3=@para3)
    AND (@para4 IS NULL OR col4=@para4)

转载地址:http://snpdl.baihongyu.com/

你可能感兴趣的文章
alter table
查看>>
jquery内容补充
查看>>
mstsc 修改密码
查看>>
mvc的表单发送ajax请求,太强大了!!!!
查看>>
Oracle11g 密码延迟认证导致library cache lock的情况分析
查看>>
Oracle 手工清除回滚段的几种方法
查看>>
有声小说播音员
查看>>
备忘~~~~
查看>>
随币_super.霸气
查看>>
如何成为一名优秀的web前端工程师
查看>>
//读取配置文件(属性文件)的工具类-ConfigManager
查看>>
CenterFactory
查看>>
获取绑定变量语句中传入的值
查看>>
自已做的框架RJ 第六篇----------------异步篇
查看>>
【LeetCode】107 - Binary Tree Level Order Traversal II
查看>>
大叔也说Xamarin~Android篇~原生登陆与WebView的网站如何共享Session
查看>>
开发人员应该对IIS理论层的知识了解的多一些~第三讲 网页从IIS端到客户端浏览器经历的阶段...
查看>>
将不确定变为确定~老赵写的CodeTimer是代码性能测试的利器
查看>>
Android自定义文本的进度条
查看>>
How to call JavaScript Function in objective C
查看>>