SQL如何根据传入的参数来判断是否执行where条件 存储过程

问题描述

SQL如何根据传入的参数来判断是否执行where条件 存储过程

begin
select [reimbursement_id] = a.reimbursement_id
,[formCode] = a.formCode
,[reimbursement_title] = a.reimbursement_title
,[reimbursement_company_name] = c.EipCompanyShortName
,[VATPriceAmount] = a.VATPriceAmount
,[VATTaxAmount] = a.VATTaxAmount
,[last_modify_time]=a.last_modify_time
,[IsInclueSale] = a.IsInclueSale
,[total_money] = a.total_money
,[SaleTaxRate] = a.SaleTaxRate
,[SaleTaxAmount] = a.SaleTaxAmount
,[basic_data_value] = ISNULL(b.basic_data_value,'未指定')
,ROW_NUMBER() over(order by formCode) as RowIndex

    into #NoPagedDataSet1
    from [Finance].[dbo].[finance_reimbursement] a WITH ( NOLOCK )
    INNER JOIN dbo.finance_companyMapping c WITH ( NOLOCK )
    ON a.reimbursement_company_code = c.EipCode
    LEFT JOIN dbo.finance_basic_data b WITH ( NOLOCK )
    ON a.[SaleTaxRate] = b.basic_data_id and b.basic_data_type_id=64
    where a.reimbursement_type = 2
    and formCode like '%'+ISNULL(@FormCode,'')+'%'
    and reimbursement_title like '%'+ISNULL(@FormTitle,'')+'%'
    and a.last_modify_time between @PassedDateFrom and @PassedDateTo
    and a.IsInclueSale = @IsInclueSale      @IsInclueSale怎么为空时不执行
    and a.reimbursement_company_code = @Company_Code     @Company_Code怎么为空时不执行

    order by [reimbursement_id] desc
    select *,RowIndex from #NoPagedDataSet1
    where 

    RowIndex > ((@CurrentPage - 1) * @PageSize) And RowIndex <=(@CurrentPage * @PageSize)

    SET @TotalCount = (SELECT COUNT(*) AS TotalCount FROM #NoPagedDataSet1)

    drop table #NoPagedDataSet1

end

时间: 2024-12-03 01:04:11

SQL如何根据传入的参数来判断是否执行where条件 存储过程的相关文章

SQL Server使用变量和参数以及语句执行时执行计划的差异

T-SQL语句之间传输数据有以下一些途径:1)本地变量2)存储过程中的参数3)应用程序变量4)参数标记上面4种变量中,比较常用的是本地变量和存储过程中的参数. 本地变量指在查询前declare参数,并且set设值之后,在查询语句中直接使用声明的参数,而不是直接使用其值. 存储过程中的参数有两种,一种是定义在存储过程里面,类似上面的本地变量,一种是定义在存储过程外面.这两种参数,都是在执行存储过程时,将参数值传入进去.不过两种定义方法各有优缺点,下一章将进行深入探讨. 应用程序变量主要指编程语言C

pl sql test调式-oracle plsql存储过程调试 如何传入date参数

问题描述 oracle plsql存储过程调试 如何传入date参数 begin -- Call the procedure aa_get_lock_card_id(p_member_id => :p_member_id, p_month_max_times => :p_month_max_times, p_now_time => :p_now_time, p_start_time => :p_start_time, p_sys_info_info => :p_sys_inf

weblogic连接池-Java调用Oracle存储过程传入数组参数报错

问题描述 Java调用Oracle存储过程传入数组参数报错 weblogic连接池 JNDI提供的链接保存 Oracle数组 报错 oracle.jdbc.driver.T4CConnection cannot be cast to oracle.jdbc.OracleConnection oracle.jdbc.driver.T4CConnection cannot be cast to oracle.jdbc.OracleConnection 大家好,我在用weblogic连接池 JNDI

java-ibatis如果传入list参数 数据库查不到结果集时报下标越界错误

问题描述 ibatis如果传入list参数 数据库查不到结果集时报下标越界错误 用ibatis传入的一个list集合 需要用到其中的主键ID, 但是其中只有某些ID可以查到结果集,这样的话ibatis会报下标越界错误 有什么解决方法吗 解决方案 把SQL和传入参数贴上来吧 解决方案二: 错误信息是什么呢,看看

mybatis-Mybatis的配置文件的test标签中如何使用Map传入的参数

问题描述 Mybatis的配置文件的test标签中如何使用Map传入的参数 java中传入了一个map: map.put("userid","100"); map.put("status","2"); sql的配置文件: </when> <when test="#{_parameter.status} == '1'"> </when> <when test=&quo

c-ESQL的函数使用传入的参数总报未定义

问题描述 ESQL的函数使用传入的参数总报未定义 请教各位大神,本人写C代码的,本来链接数据库一直用公司的平台封装的函数.今天自己研究了下esql封装几个最简单的函数,但是传给esql函数的参数,总说未定义,是什么问题. #include <stdio.h> EXEC SQL INCLUDE sqlca; EXEC SQL INCLUDE sqlda; EXEC SQL INCLUDE sqlhdr; EXEC SQL INCLUDE decimal; EXEC SQL INCLUDE loc

SQL中函数 replace 的参数1的数据类型ntext无效的解决方法

今天将一个ACC的数据库转换成ms-sql以后发现在使用replace替换语句的时候出现: SQL中函数 replace 的参数 1 的数据类型 ntext 无效.找了半天找到了解决办法: 因为ntext需要转化下 用如下语句即可解决: 复制代码 代码如下:UPDATE 表 SET 字段=REPLACE(cast(字段 AS varchar(8000)),'被替换的内容','将要替换成的内容') varchar(8000)是字段类型.8000是个很猛的字段,可以根据自己的实际情况改动!

键盘响应-C# 需要在判断输入回车后对某传入的参数进行操作,请问怎么实现?

问题描述 C# 需要在判断输入回车后对某传入的参数进行操作,请问怎么实现? private void Mission_KeyDown(object sender, KeyEventArgs e,short i) { if (e.KeyCode == Keys.Enter) { //对i操作 } } 这样写无法引用,求问有什么办法可以实现? 解决方案 把i这个参数放进TextBox控件的Tag对像中传入 private void Mission_KeyDown(object sender, Key

java方法-java一个方法形参有两个,如何在调用的时候只传入一个参数

问题描述 java一个方法形参有两个,如何在调用的时候只传入一个参数 如题,有一个方法里两个形参,我另一个文件类中一个方法想要那个方法的返回值,可是第二个参数在这里用不到,能否只传第一个参数 如何实现,前提这个类不能继承后重写方法,因为多人合同写的. 解决方案 不可以,变通的办法是再写一个只有一个参数的函数重载形式,在其中给另一个参数一个预设值,间接调用. 解决方案二: 一个Action调用两个不同的方法 解决方案三: 调用的时候给一个无影响的值 解决方案四: 讲道理的话是不能这样做的,不过如果