0 0

请问在java 里调用存储过程,显示数据,当传的参数为NULL时,查询所有数据,这个怎处理呢?0

请问在java 里调用存储过程,显示数据,当传的参数为NULL时,查询所有数据,这个怎处理呢?

create procedure ProcInventory
@GoodsCode nvarchar(50),
@GoodName nvarchar(50),
@BeginDate  nvarchar(50),
@EndDate  nvarchar(50)
as
declare @sql varchar(4000)

create table #test(ord varchar(30),GoodsCode nvarchar(20),GoodsName nvarchar(50),Amount nvarchar(50),UnitPrice nvarchar(50),
SumMoney nvarchar(10),Brand nvarchar(50),Unit nvarchar(50))
set @sql= 'insert into #Test(ord ,GoodsCode,GoodsName ,Amount ,UnitPrice ,
SumMoney ,Brand ,Unit )
select ROW_NUMBER() over(order by TbShGoods.GoodsCode) as ord,  TbShGoods.GoodsCode,i.GoodName,(i.Amount-isnull(0,o.Amount)) as Amount,i.UnitPrice
     ,(i.Sum-isnull(0,o.Sum)) as Sum ,Brand,Unit
      from tbshindetail i left join tbshoutdetail o on i.GoodsID=o.GoodsID
      inner join TbShin on i.InID=TbShin.InID
          inner join TbShGoods on i.GoodsID=TbShGoods.GoodsID
where   i.GoodName='''+@GoodName+''' and TbShin.EnterDate between  '''+@BeginDate+'''
  and '''+@EndDate +''' and TbShGoods.GoodsCode='''+@GoodsCode+''''
print '11'

exec(@sql)
print @sql
2013年11月14日 19:47

1个答案 按时间排序 按投票排序

0 0

采纳的答案

未测试,大概思路是定义一个where变量
然后依次检查参数变量,如果参数非null,则where 加上比较 表达式。

每次检查一下是否需要加上and运算符。

set @sql= 'insert into #Test(ord ,GoodsCode,GoodsName ,Amount ,UnitPrice , 
SumMoney ,Brand ,Unit ) 
select ROW_NUMBER() over(order by TbShGoods.GoodsCode) as ord,  TbShGoods.GoodsCode,i.GoodName,(i.Amount-isnull(0,o.Amount)) as Amount,i.UnitPrice 
     ,(i.Sum-isnull(0,o.Sum)) as Sum ,Brand,Unit 
      from tbshindetail i left join tbshoutdetail o on i.GoodsID=o.GoodsID 
      inner join TbShin on i.InID=TbShin.InID 
          inner join TbShGoods on i.GoodsID=TbShGoods.GoodsID '
set @wheres = ''
if @GoodName is not null then
  @where = @where +'''+@GoodName+'''
endif

if @GoodName is not null then
  if @where != '' then
    @where = @where +' and '
  endif
  @where = @where +'''+@GoodName+'''
endif
.....

if @where != '' then
  @where = ' where '+@where
endif

exec(@sql+@where)

2013年11月17日 11:56

相关推荐

    java 调用存储过程

    值得注意的是,上述代码中的文件名列表(如Project1.cfg、Unit1.dcu等)与Java调用存储过程无关,它们看起来像是Delphi或FreePascal项目的文件,这些文件通常用于描述项目配置、单元信息、表单布局等,而不是与Java...

    JAVA调用存储过程

    ### JAVA调用存储过程知识点详解 #### 一、无结果集返回的存储过程调用 在Java中调用不返回结果集的存储过程时,主要步骤包括建立连接、准备调用语句、设置输入参数、执行存储过程以及处理可能产生的警告信息。 1...

    Java实现调用MySQL存储过程详解

    在上述的`show procedure status`查询中,`Security_type`列显示为`DEFINER`,这意味着存储过程将以创建者的权限执行。 总的来说,Java通过JDBC调用MySQL存储过程涉及到连接数据库、创建`CallableStatement`、执行...

    JAVA调用ORACLE存储过程

    ### JAVA调用ORACLE存储过程知识点详解 #### 一、背景与概述 在现代软件开发过程中,集成多种技术栈是常态。特别是在企业级应用中,Java 和 Oracle 数据库的组合非常常见。通过 Java 调用 Oracle 存储过程不仅能够...

    JAVA调用ORACLE存储过程通用类

    ### JAVA调用ORACLE存储过程通用类 #### 概述 在Java开发中,经常会遇到需要与数据库交互的情况,特别是当涉及到复杂的业务逻辑时,利用数据库的存储过程可以有效地提高程序性能并简化代码结构。本篇文章将详细...

    用java调用oracle存储过程总结

    se();}if(stmt != null){stmt.close();}if(conn != null){conn.close();...此外,对于存储过程的错误处理,通常需要在Oracle存储过程中添加异常捕获和处理机制,以便在Java调用时能够得到清晰的错误信息。

    用java调用oracle存储过程

    " hyq "); CallableStatement cstmt = conn.prepareCall("{ call ...需要注意的是,在使用Java调用存储过程时,要确保驱动程序已正确导入,并且数据库连接信息是准确的,还要处理可能出现的异常,确保程序的健壮性。

    Java调用存储过程

    Java调用存储过程是数据库操作中的常见任务,特别是在复杂业务逻辑和数据处理中。存储过程是一种预编译的SQL语句集合,可以在数据库服务器端执行,提高了效率并减少了网络通信量。本文将详细讲解Java如何调用存储...

    java调用oracle存储过程

    ### Java调用Oracle存储过程详解 #### 一、概述 在企业级应用开发中,数据库存储过程被广泛用于实现复杂的业务逻辑处理。由于其高效性和安全性,存储过程常常成为首选方案之一。Java作为主流的企业级开发语言之一...

    java调用存储过程小结.pdf

    Java 调用存储过程是指在 Java 程序中调用数据库中的存储过程,以便实现复杂的业务逻辑和数据处理。存储过程是指保存在数据库并在数据库端执行的程序,可以使用特殊的语法在 Java 类中调用存储过程。 Java 调用存储...

    java调用oracle分页存储过程

    Java调用Oracle分页存储过程是一项常见的数据库操作,尤其在处理大数据量时,为了提高查询效率和用户体验,分页查询显得尤为重要。Oracle数据库提供了一种高效的方法,即通过创建存储过程来实现分页功能,而Java作为...

    java存储过程返回数据集

    本文将详细介绍如何创建一个Oracle存储过程来返回数据集,并展示如何在Java应用程序中调用这个存储过程以获取结果。 #### 存储过程创建与调用示例 首先,我们需要在Oracle数据库端定义一个包和过程来处理数据集的...

    java 调用存储过程列子

    #### 四、Java调用存储过程 下面通过两个Java类来演示如何调用上面创建的存储过程。 ##### 4.1 调用 `ADDDEPT` 存储过程 ```java public class TestProcedure { Connection conn = null; CallableStatement ...

    Java调用Oracle存储过程的方法

    在Java编程中,调用Oracle数据库的存储过程是常见的任务,尤其在处理复杂业务逻辑或数据操作时。本文将详细讲解如何使用Java调用Oracle存储过程,并提供示例代码。 首先,我们需要了解Java中用于与数据库交互的核心...

    java 调用ORCAL存储过程

    ### Java调用Oracle存储过程详解 #### 一、概述 在企业级应用开发中,数据库操作是必不可少的一部分。为了提高程序性能与数据处理的安全性,通常会将复杂的业务逻辑放在数据库端实现,其中就包括使用存储过程。...

    java中调用oracle的存储过程和函数

    ### Java中调用Oracle的存储过程和函数 在Java应用程序中调用Oracle数据库中的存储过程或函数是一项常见的任务。这不仅能够提高代码的执行效率,还可以有效地管理事务处理,确保数据的一致性和完整性。本文将详细...

    java调用存储过程

    ### Java调用存储过程详解 #### 一、存储过程简介 在数据库系统中,存储过程是一种预先编写并编译好的SQL脚本,它可以接受输入参数并返回结果集或输出参数。存储过程的主要优点包括提高性能(因为它们是预编译的)...

Global site tag (gtag.js) - Google Analytics