sql server 中存储过程where条件需要判断进行拼接

 1 USE [Mct]
 2 GO
 3 /****** Object:  StoredProcedure [dbo].[P_CountIcCardTradInfo]    Script Date: 05/20/2015 09:04:45 ******/
 4 SET ANSI_NULLS ON
 5 GO
 6 SET QUOTED_IDENTIFIER ON
 7 GO
 8
 9 ALTER PROCEDURE [dbo].[P_CountIcCardTradInfo]
10 (
11  @bdate  datetime,
12  @edate  datetime,
13  @CusName varchar(30),
14  @CardCode varchar(30),
15  @BusinessType varchar(30),
16  @UserCode varchar(30)
17 )
18 AS
19 Declare @strSql varchar(max)
20 set @strSql=‘select RecordTime,CardCode,CusCode,RelName,BoothCode,Deposit,UserCode,BusinessType,BusinessValue from #TempTableTradInfoCount where  1=1‘;
21
22 BEGIN
23     --创建临时表用于保存数据
24 Create table #TempTableTradInfoCount
25 (
26
27 RecordTime     datetime      not null,
28 CardCode       varchar(10)   not null,
29 CusCode        varchar(30)   not null,
30 RelName        varchar(30)   not null,
31 BoothCode      varchar(30)   not null,
32 Deposit        decimal(10,2) not null,
33 UserCode       varchar(30)   not null,
34 BusinessType   varchar(50)   not null,
35 BusinessValue  varchar(50)   not null
36 )
37
38 if(@bdate is not null) and (@bdate!=‘‘)
39  set @strSql= @strSql + ‘ and CONVERT(varchar(10),RecordTime,120) >= ‘‘‘+CONVERT(varchar(10),@bdate,120)+‘‘‘‘ ;
40
41 if(@edate is not null) and (@edate!=‘‘)
42  set @strSql= @strSql + ‘ and CONVERT(varchar(10),RecordTime,120) <=‘‘‘+CONVERT(varchar(10),@edate,120)+‘‘‘‘ ;
43
44 if (@CusName is not null) and (@CusName!=‘‘)
45  set  @strSql= @strSql + ‘ and RelName = ‘‘‘ + @CusName +‘‘‘‘;
46
47 if (@CardCode is not null) and (@CardCode!=‘‘)
48  set  @strSql= @strSql + ‘ and CardCode =‘‘‘ + @CardCode+‘‘‘‘ ;
49
50 if (@BusinessType is not null) and (@BusinessType!=‘‘)
51  set  @strSql= @strSql + ‘ and BusinessType =‘‘‘ + @BusinessType+‘‘‘‘ ;
52
53 if (@UserCode is not null) and (@UserCode!=‘‘)
54  set  @strSql= @strSql + ‘ and UserCode =‘‘‘ + @UserCode +‘‘‘‘;
55
56  --print @strsql;
57
58 --主卡
59 insert into #TempTableTradInfoCount(RecordTime,CardCode,CusCode,RelName,BoothCode,Deposit,UserCode,BusinessType,BusinessValue)
60 select EditDate,IcCardNoCpu,Kh_dm,Kh_mc,‘‘,0,UseCode,‘MainCard‘,‘主卡‘  from Khda where IcCardNoCpu !=‘‘ and (UseCode!=‘Y‘ or UseCode!=‘y‘)
61
62 --副卡
63 insert into #TempTableTradInfoCount(RecordTime,CardCode,CusCode,RelName,BoothCode,Deposit,UserCode,BusinessType,BusinessValue)
64 select EditDate,PartCardNo,Khdm,Khmc,‘‘,ysje,UserCode,‘ViceCard‘,‘副卡‘ from IcCardCopyRecord
65
66 --临时卡转正
67 insert into #TempTableTradInfoCount(RecordTime,CardCode,CusCode,RelName,BoothCode,Deposit,UserCode,BusinessType,BusinessValue)
68 select pd.RecordTime,cus.IcCardNoCpu,cus.Kh_dm,cus.Kh_mc,‘‘,pd.Deposit,Registration,‘TemCard‘,‘临时卡‘ from PositiveDeposit pd inner join Khda cus on pd.CustomerCord=cus.Kh_dm
69
70 --挂失
71 insert into #TempTableTradInfoCount(RecordTime,CardCode,CusCode,RelName,BoothCode,Deposit,UserCode,BusinessType,BusinessValue)
72 select LossRq,CardCode,Khdm,Khmc,‘‘,Gsf,UserCode,‘LossCard‘,‘挂失‘ from IcCardLoss
73
74 --退卡
75 insert into #TempTableTradInfoCount(RecordTime,CardCode,CusCode,RelName,BoothCode,Deposit,UserCode,BusinessType,BusinessValue)
76 select EditDate,CardCode,Khdm,Khmc,‘‘,Tkf,UserCode,‘BackCard‘,‘退卡‘ from IcCardReturn
77
78 exec(@strSql);
79
80 END
时间: 2024-10-10 06:59:18

sql server 中存储过程where条件需要判断进行拼接的相关文章

SQL Server中存储过程 比 直接运行SQL语句慢的原因

问题是存储过程的Parameter sniffing 在很多的资料中都描述说SQLSERVER的存储过程较普通的SQL语句有以下优点: 1. 存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度. 2. 经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作.当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query,Delete时),可将此复杂操作用

SQL Server中存储过程比直接运行SQL语句慢的原因

原文:SQL Server中存储过程比直接运行SQL语句慢的原因 在很多的资料中都描述说SQLSERVER的存储过程较普通的SQL语句有以下优点: 1.       存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度. 2.       经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作.当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query

SQL Server中存储过程Stored Procedure创建及C#调用

存储过程就是已经编译好的.优化过的放在数据库服务器中的一些SQL语句:可供应用程序直接调用.使用存储过程有以下几个优点: 1.执行速度比普通的SQL语句快 2.便于集中控制 3.可以降低网络的通信量 4.保证数据库的安全性和完整性 5.灵活性 创建存储过程 可以采用Transact-SQL语句来创建存储过程Stored Procedured.在Microsoft SQL Server Management Studio中Databases->Database Name->Programmabi

SQL Server中存储过程的创建命令

Create Proc 存储过程名称 ( @参数1 参数类型, @参数2 参数类型, ... ... --最后一行参数,别加逗号了,加逗号的意思是表示后面还有参数 ) AS 需要执行的SQL命令 GO 例: 向Example数据库中的department表(表中有ID,Name,Direc,Note这几个参数)插入数据的存储过程: USE Example GO Create Proc pro_department_insert --创建名为pro_department_insert的存储过程 (

SQL Server中存储过程的调试方法

1.以管理员用户登录DB服务器,把域用户追加到「Administrators」组. 2.在本机上以域用户登录,启动VS. 3.追加DB连接 4.右击要debug的存储过程,选择「ストアドプロシージャにステップイン」. 5.像普通的.NET程序一样进行Debug 6.追加监视

SQL Server 中存储过程的练习

建库建表建约束 插入数据 --建库建表建约束和插入测试数据 use bankDB go --1.完成存款,取款业务--存款 create proc usp_takeMoney @takeType nvarchar(2),@Money money,@cardID char(19),@pass char(6)=null,@remark text =null as print '交易正在进行,请稍后......' if((select COUNT(1) from cardInfo where card

SQL Server中对存储过程的理解

数据库的存储过程理解为,处理数据的子程序,写起来像函数,用起来像函数,在SQL Server中存储过程分为两大类,系统的和自定义的,系统的都放在master系统数据库中,自定义就是自己去写的,用DDL的相关语句即可,创建存储过程,就像函数一样,可以有参,也可以无参,无参的时候写起来很简单: CREATE PROC hello AS BEGIN /*....*/ END GO 执行的时候也是,只需要在自定义存储过程执行即可 EXEC hello 有参的时候写法也不陌生: CREATE PROC h

SQL Server中带事务的存储过程简单举例

先来看一个概念: 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完整地执行,要么完全地不执行.那么在存储过程里添加事务,则可以保证该事务里的所有sql代码要么完全执行要么完全不执行. 举个简单的带事务的存储过程: Begin Set NOCOUNT ON; --不返回影响行数 Set XACT_ABORT ON; --使用存储过程执行事务需要开启XACT_ABORT参数(默认为OFF) delete from table1 where n

SQL Server中的CLR编程——用.NET为SQL Server编写存储过程和函数

原文:SQL Server中的CLR编程--用.NET为SQL Server编写存储过程和函数 很早就知道可以用.NET为SQL Server2005及以上版本编写存储过程.触发器和存储过程的,不过之前开发的系统要么因为历史原因用的是SQL2000要么根本用不着在SQL Server中启用CLR,所以一直没有尝试.最近因为项目的原因,在这方面做了一个调研,现在在这里分享一下心得. 首先要说明的是要在SQL Server中启用CLR必须是在SQL Server2005及以上版本,其次在默认情况下是