`
冷寒冰
  • 浏览: 250960 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

多条件查询的存储过程的写法

 
阅读更多
USE [ESD]
GO
/****** Object:  StoredProcedure [dbo].[SP_RevertOrderInfo]    Script Date: 2013/10/15 15:44:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROC [dbo].[SP_RevertOrderInfo]
(
@SPSN varchar(40),
@MaterialNo varchar(40),
@BorrowSPSN varchar(40),
@OrderID bigint,
@SOID bigint,
@PRCode bigint,
@BranchID varchar(40),
@UserID varchar(40),
@StartDate bigint,
@EndDate bigint,
@PageSize int,
@PageIndex int,
@Count int output
)
/******************************************************************************
** Name: SP_GetRevertOrderInfo
** Desc: 查询备件归还信息
** Return Values:SP_GetRevertOrderInfo
** Auth:a
** Date: 2013-05-28
******************************************************************************/
AS
BEGIN
SELECT * FROM
(
SELECT
ROW_NUMBER() OVER(ORDER BY [SPOD].[CreateTime] DESC) AS [rowIndex],
[SPO].[RTID],
[SPO].[BranchID],
[SPOD].[SPSN],
[SPOD].[MaterialNo],
[SPOD].[BorrowSPSN],
[SPOD].[SPMark],
(CASE WHEN [IDTS].[MarkStatus] IS NULL THEN '70' ELSE [IDTS].[MarkStatus] END) AS [MarkStatus],
[SM].[MaterialName],
[SM].[YakuanPrice] AS [DownYakuanPrice],
[USM].[YakuanPrice] AS [UpYakuanPrice],
[SA].[StoreAreaName],
[SPOD].[ChangeRecID],
[SPOD].[SOID],
[SPOD].[PRCode],
[SPO].[CreateBy],
[SPO].[CreateTime]
FROM [SP_RevertOrder] AS [SPO]
INNER JOIN [SP_RevertOrderDetail] AS [SPOD] ON [SPO].[RTID] = [SPOD].[RTID]
INNER JOIN [SP_Material] AS [SM] ON [SPOD].[MaterialNo]=[SM].[MaterialNo]
LEFT JOIN [SP_Material] AS [USM] ON [SPOD].[BorrowMaterialNo]=[USM].[MaterialNo]
INNER JOIN [MD_MaterialClass] AS [MC] ON [SM].[MaterialClassCode]=[MC].[MaterialClassCode]
INNER JOIN [SP_StoreArea] AS [SA] ON [SPOD].[StoreAreaID]=[SA].[StoreAreaID]
LEFT  JOIN [SP_InventoryDetails] AS [IDTS] ON [SPOD].[SPSN] =[IDTS].[SPSN]
WHERE (@SPSN ='' OR [SPOD].[SPSN]=@SPSN)
AND (@MaterialNo ='' OR [SPOD].[MaterialNo]=@MaterialNo)
AND (@BorrowSPSN ='' OR [SPOD].[BorrowSPSN]=@BorrowSPSN)
AND (@SOID IS NULL OR [SPOD].[SOID]=@SOID)
AND (@PRCode IS NULL OR [SPOD].[PRCode]=@PRCode)
AND [SPO].[BranchID]=@BranchID
AND (@OrderID IS NULL OR [SPO].[RTID]=@OrderID)
AND (@UserID ='' OR [SPOD].[CreateBy]=@UserID)
AND ([SPO].[RTID]>=@StartDate
AND  [SPO].[RTID]<=@EndDate)
) AS [RES]
WHERE [RES].[rowIndex]>@PageSize*(@PageIndex-1) AND [RES].[rowIndex]<=@PageSize*@PageIndex

SET @Count=(SELECT COUNT([SPOD].[RTDID])
FROM [SP_RevertOrder] AS [SPO]
INNER JOIN [SP_RevertOrderDetail] AS [SPOD] ON [SPO].[RTID] = [SPOD].[RTID]
INNER JOIN [SP_Material] AS [SM] ON [SPOD].[MaterialNo]=[SM].[MaterialNo]
LEFT JOIN [SP_Material] AS [USM] ON [SPOD].[BorrowMaterialNo]=[USM].[MaterialNo]
INNER JOIN [MD_MaterialClass] AS [MC] ON [SM].[MaterialClassCode]=[MC].[MaterialClassCode]
INNER JOIN [SP_StoreArea] AS [SA] ON [SPOD].[StoreAreaID]=[SA].[StoreAreaID]
LEFT  JOIN [SP_InventoryDetails] AS [IDTS] ON [SPOD].[SPSN] =[IDTS].[SPSN]
WHERE (@SPSN ='' OR [SPOD].[SPSN]=@SPSN)
AND (@MaterialNo ='' OR [SPOD].[MaterialNo]=@MaterialNo)
AND (@BorrowSPSN ='' OR [SPOD].[BorrowSPSN]=@BorrowSPSN)
AND (@SOID IS NULL OR [SPOD].[SOID]=@SOID)
AND (@PRCode IS NULL OR [SPOD].[PRCode]=@PRCode)
AND [SPO].[BranchID]=@BranchID
AND (@OrderID IS NULL OR [SPO].[RTID]=@OrderID)
AND (@UserID ='' OR [SPOD].[CreateBy]=@UserID)
AND ([SPO].[RTID]>=@StartDate
AND [SPO].[RTID]<=@EndDate))
RETURN
END

分享到:
评论

相关推荐

    存储过程写法,存储过程

    4. **性能优化**:定期审查存储过程的执行计划,优化索引结构,提高查询效率。 通过以上内容,我们可以更深入地理解如何在Oracle数据库中创建和使用存储过程,尤其是在处理大量数据和复杂逻辑时的优势。

    DB2存储过程写法介绍

    存储过程的使用有多个显著优势。首先,它可以减少客户端和服务器之间的网络通信,因为处理过程在服务器端执行,减少了不必要的数据传输。其次,存储过程有助于提升安全性,允许数据库管理员通过权限管理来限制对数据...

    oracle存储过程写法

    根据提供的Oracle存储过程示例,我们可以详细解析其中的关键知识点,包括存储过程的创建、游标的使用、临时表的创建及数据处理等。 ### 存储过程的创建与使用 存储过程是在数据库中编写的SQL代码块,它可以接受...

    SQL Server存储过程基本语法

    以上内容主要介绍了 SQL Server 中存储过程中的一些基本语法和操作方法,包括变量定义及赋值、表和临时表的操作、循环以及条件语句等,这些知识点对于理解和使用 SQL Server 存储过程至关重要。

    DB2存储过程-基础教程

    综上所述,DB2存储过程的开发涉及了SQLPL编程的多个方面,包括变量声明和赋值、数据类型的使用、条件和迭代控制语句的应用、错误处理、以及结果集的处理。通过这些元素的组合使用,开发者可以构建强大的定制化业务...

    INFORMIX最新实用存储过程编写.doc

    数据完整性语句确保数据的准确性和一致性,查询优化信息语句帮助分析查询性能,而存储过程语句则用于创建、修改和执行存储过程。 存储过程的基本语法包括创建、修改和删除过程的命令,例如: ```sql CREATE ...

    ASP调用存储过程及存储过程的一些写法.doc

    这里,`upGetUserName`是存储过程名称,`@intUserId`和`@intUserpass`是输入参数,用于传递查询条件。 2. **ASP调用无参数的存储过程** 对于不包含参数的存储过程,ASP调用示例如下: ```asp set db = Server....

    oracle存储过程详解-开发技术

    4. **代码重用性**:存储过程可以被多个应用程序共享,避免了重复编写相同的代码。 #### 三、Oracle存储过程的基本语法 ##### 1. 创建存储过程 ```sql CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN ...

    Oracle的分页查询语句 Oracle分页的存储过程

    本文将详细探讨Oracle的分页查询语句及其存储过程。 首先,Oracle的分页查询语句通常遵循一个标准格式,如下所示: ```sql SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT * FROM TABLE_NAME ) A WHERE ...

    关于oracle存储过程的基本语法

    在存储过程中,`SELECT INTO`语句用于将查询结果存入变量中。如果查询返回多条记录,则会发生异常(ORA-01422)。如果查询结果为空,则会抛出`NO_DATA_FOUND`异常。 **示例**: ```sql BEGIN SELECT col1, col2 ...

    存储过程编写经验和优化措施

    2. 查询计划分析:在提交存储过程之前,务必使用set showplan on分析查询计划,对SQL进行自我优化。这有助于提前发现潜在的性能问题,提升程序执行效率。 3. SQL使用规范: a) 避免大事务操作,谨慎使用holdlock,...

    达梦数据库6与sinoregal ds/informix存储过程对比

    通过对DM与Sinoregal存储过程在定义、删除以及控制语句等方面的详细比较,可以看出两者在很多方面有着明显的差异。这些差异不仅体现在语法细节上,还包括设计思路和实现机制的不同。因此,在进行数据库迁移时,需要...

    sql\(很长的l模糊查询拼接)sql存储过程

    本文将深入探讨一种特殊的SQL存储过程——基于条件动态构建的模糊查询语句,该方法允许用户根据传入参数的不同组合来构建灵活多变的查询逻辑。 #### 标题解读:“SQL(很长的L模糊查询拼接)SQL存储过程” 标题中...

    SQL工作笔记-达梦7存储过程中游标的使用(for循环 IF等)

    本篇工作笔记主要介绍了达梦数据库(DAMENG DB)7版本中存储过程中的游标使用,包括for循环、IF条件判断以及其他相关操作。 首先,我们来看游标的使用。游标是一种数据库对象,它允许我们逐行处理查询结果。在存储...

    绝对惊世骇俗的SQL写法

    1. **子查询和联接操作**:高级的SQL写法可能会利用子查询和多表联接来处理复杂的数据关系,比如在单个查询中同时处理多个表的数据,或者通过嵌套查询来获取特定条件下的子集。 2. **窗口函数**:MySQL 8.0引入了...

    如何在SQL SERVER 2005存储过程中,使用循环语句

    总结一下,这个存储过程`tester`的主要功能是查找Account字段以特定模式('111%')开头的用户,然后调用`UserService_RemoveUserByUserId`存储过程删除这些用户,直至没有符合条件的用户为止。在编写存储过程时,...

    三菱PLC控制伺服程序经典写法及破析方法.pdf

    伺服专用指令写法事例包括原点回归启动开关原点回归代码执行程序启动条件运行形式控制方式加减速命令速度定位地址执行伺服1号定位地址数据等多个方面。 本资源摘要信息涵盖了三菱PLC控制伺服程序的经典写法和破析...

    oracle 存储过程和函数例子

    下面将通过给出的一些示例来讲解存储过程、函数以及在PL/SQL中使用的循环和条件语句。 1. **存储过程**: 存储过程是一组预编译的SQL语句,用于执行特定任务。在示例中,`peace_if` 是一个存储过程,它使用游标`...

Global site tag (gtag.js) - Google Analytics