存储过程实例总结(开发中的错误与总结,调试,数据库函数DATEDIFF计算当前日期是否在本周内)
USE [POND]
GO
/****** Object: StoredProcedure [dbo].[OrderChargeList] Script Date: 04/16/2014 13:32:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO CREATE PROCEDURE [dbo].[OrderChargeList]
AS
DECLARE @dateDiffValue int,
@cnt int
BEGIN
SET NOCOUNT ON; SELECT @dateDiffValue= DATEDIFF(WEEK,isnull((SELECT TOP 1 CONVERT(VARCHAR(10),EnteredDate,121) FROM dbo.LGTobeOrder_CCBatch),'2000-01-01'),GETDATE()) --SELECT @cnt= COUNT(*) FROM dbo.LGTobeOrder_CCBatch
--SELECT * FROM LGOrder
--where customerid is not null and orderid is not null
--select * from dbo.LGTobeOrder_CCBatch --delete FROM LGOrder where customerid not in(17,19,1) --IF(@cnt<0)
--BEGIN
-- INSERT INTO dbo.LGTobeOrder_CCBatch(CustomerID,orderID,FirstName,LastName,recordCount,perRecordCost,ccAmount,EMail)
-- SELECT a.customerid,a.orderid,b.firstName,b.lastName, dbo.[GetCustomerDataCount](a.orderid),0.65,6.5,b.EmailAddress FROM LGOrder a inner join LGCustomerBilling b
-- ON a.customerid =b.customerid -- SELECT * FROM dbo.LGTobeOrder_CCBatch WHERE ccProcStatus != 'DONE'
-- RETURN
--END --IF(@dateDiffValue<7 AND @dateDiffValue>=0)
IF(@dateDiffValue>7)
BEGIN
/*print 'a'*/
--SELECT * FROM dbo.LGTobeOrder_CCBatch WHERE ccProcStatus != 'DONE'
truncate table dbo.LGTobeOrder_CCBatch INSERT INTO dbo.LGTobeOrder_CCBatch(CustomerID,orderID,FirstName,LastName,recordCount,perRecordCost,ccAmount,EMail)
SELECT a.customerid,a.orderid,b.firstName,b.lastName, dbo.[GetCustomerDataCount](a.orderid) as 'recordCount',0.65,dbo.[GetCustomerDataCount](a.orderid)*0.65,b.EmailAddress FROM LGOrder a inner join LGCustomerBilling b
ON a.customerid =b.customerid
END SELECT * FROM dbo.LGTobeOrder_CCBatch WHERE isnull(ccProcStatus,'') != 'DONE' --select top 10 * from dbo.LGOrder
--select top 10 * from dbo.LGOrderZips
--SELECT top 10 [ZipFrom],[ZipTo],[Radius] FROM [POND].[dbo].[zipcode_radius_around]
--where zipfrom =12601 and radius<=10
--1 准备数据
SET NOCOUNT OFF
END
USE [POND]
GO
/****** Object: StoredProcedure [dbo].[PROC_LGGetCustomerDataForRequest] Script Date: 04/16/2014 11:28:42 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[PROC_LGGetCustomerDataForRequest] /*Variable*/
@OrderId varchar(10)
AS
declare @DataSource varchar(10),
@PropertyType varchar(10),/*For dbo.PostMover specially*/
@PriceRange int, /*For dbo.premover specially*/
@Radius varchar(10)
select @PriceRange=PriceRange,@PropertyType=PropertyType,@Radius=radius from dbo.LGOrder where orderid=@OrderId
/*
Summary:根据提供的OrderId,DataSource,PropertyType,Zips,Radius来获取符合指定条件的客户数据。
*/
BEGIN IF @DataSource IS NOT NULL AND @DataSource = 'premover'
BEGIN SELECT * INTO dbo.LGPremoverDataCampaignHistory_Backup FROM dbo.LGPremoverDataCampaignHistory truncate table dbo.LGPremoverDataCampaignHistory INSERT INTO dbo.LGPremoverDataCampaignHistory
( OrderId ,idkey2,zip ,state,city,address,idkey,addtype,plus4,scrapedt,dpb,price ,
buy_flag , date,AddDate)
SELECT @OrderId AS OrderId,[idkey2],[zip],[state]
,[city],[address],[idkey],[addtype],[plus4],[scrapedt]
,[dpb],[price],[buy_flag],[date],GETDATE() AS AddDate
from dbo.premover
where zip in((SELECT b.zipto
from dbo.LGOrderZips a left JOIN dbo.zipcode_radius_around b
ON a.codes=b.zipfrom
where orderid=@OrderId AND b.Radius<= @Radius
AND b.ZipFrom is NOT NULL AND b.zipto is NOT NULL
AND b.ZipTo NOT IN(SELECT codes FROM dbo.LGOrderZips where orderid=@OrderId )
GROUP BY ZipTo)
UNION (SELECT codes FROM dbo.LGOrderZips where orderid=@OrderId))
AND price <=@PriceRange
END ELSE IF @DataSource IS NOT NULL AND @DataSource = 'postmover'
BEGIN SELECT * INTO dbo.LGPostMoveWeeklyDataCampaignHistory_Backup FROM [dbo].[LGPostMoveWeeklyDataCampaignHistory] truncate table dbo.LGPostMoveWeeklyDataCampaignHistory INSERT INTO [POND].[dbo].[LGPostMoveWeeklyDataCampaignHistory]
([OrderId],[fname],[lname],[zip],[plus4],[address],[city],[state],[pub_dt],[seg_nbr]
,[fullname],[dpbc],[addtype],[dwell_typ],[AddDate])
SELECT @OrderId AS OrderId,[fname],[lname],[zip],[plus4],[address],[city],[state],[first_pub_dt],[seg_nbr]
,[fullname],[dpbc],[addtype],[dwell_typ],GETDATE() AS AddDate
from postmover
where zip in((SELECT b.zipto
from dbo.LGOrderZips a left JOIN dbo.zipcode_radius_around b
ON a.codes=b.zipfrom
where orderid=@OrderId AND b.Radius<= @Radius
AND b.ZipFrom is NOT NULL AND b.zipto is NOT NULL
AND b.ZipTo NOT IN(SELECT codes FROM dbo.LGOrderZips where orderid=@OrderId )
GROUP BY ZipTo)
UNION (SELECT codes FROM dbo.LGOrderZips where orderid=@OrderId))
AND dwell_typ=@PropertyType
END ELSE IF @DataSource IS NOT NULL AND @DataSource = 'both'
BEGIN SELECT * INTO dbo.LGPremoverDataCampaignHistory_Backup FROM dbo.LGPremoverDataCampaignHistory truncate table dbo.LGPremoverDataCampaignHistory INSERT INTO dbo.LGPremoverDataCampaignHistory
( OrderId ,idkey2,zip ,state,city,address,idkey,addtype,plus4,scrapedt,dpb,price ,
buy_flag , date,AddDate)
SELECT @OrderId AS OrderId,[idkey2],[zip],[state]
,[city],[address],[idkey],[addtype],[plus4],[scrapedt]
,[dpb],[price],[buy_flag],[date],GETDATE() AS AddDate
from dbo.premover
where zip in((SELECT b.zipto
from dbo.LGOrderZips a left JOIN dbo.zipcode_radius_around b
ON a.codes=b.zipfrom
where orderid=@OrderId AND b.Radius<= @Radius
AND b.ZipFrom is NOT NULL AND b.zipto is NOT NULL
AND b.ZipTo NOT IN(SELECT codes FROM dbo.LGOrderZips where orderid=@OrderId )
GROUP BY ZipTo)
UNION (SELECT codes FROM dbo.LGOrderZips where orderid=@OrderId))
AND price <=@PriceRange SELECT * INTO dbo.LGPostMoveWeeklyDataCampaignHistory_Backup FROM [dbo].[LGPostMoveWeeklyDataCampaignHistory] truncate table dbo.LGPostMoveWeeklyDataCampaignHistory INSERT INTO [POND].[dbo].[LGPostMoveWeeklyDataCampaignHistory]
([OrderId],[fname],[lname],[zip],[plus4],[address],[city],[state],[pub_dt],[seg_nbr]
,[fullname],[dpbc],[addtype],[dwell_typ],[AddDate])
SELECT @OrderId AS OrderId,[fname],[lname],[zip],[plus4],[address],[city],[state],[first_pub_dt],[seg_nbr]
,[fullname],[dpbc],[addtype],[dwell_typ],GETDATE() AS AddDate
from postmover
where zip in((SELECT b.zipto
from dbo.LGOrderZips a left JOIN dbo.zipcode_radius_around b
ON a.codes=b.zipfrom
where orderid=@OrderId AND b.Radius<= @Radius
AND b.ZipFrom is NOT NULL AND b.zipto is NOT NULL
AND b.ZipTo NOT IN(SELECT codes FROM dbo.LGOrderZips where orderid=@OrderId )
GROUP BY ZipTo)
UNION (SELECT codes FROM dbo.LGOrderZips where orderid=@OrderId))
AND dwell_typ=@PropertyType
END END
1.若在创建存储过程中,发现某行报错。
如:某行处的END出错。(导致我郁闷了很久!)
这就说明BEGIN与END之间的代码块中有没有检查出的错误,而你需要做的就是找出错误并修改。
2.在存储过程内部定义参数变量之后,如果在代码块中有可能无法为其赋值,则在BEGIN之后为其手动赋初值,否则在该参数变量在存储过程执行完毕后为NULL。
3.如果在存储过程执行完毕后,没有得到预期的数据或值,则对代码块中的关键代码进行手动调试(print,select);如果手动调试变量没有问题就检查前面的条件性的语句进行检查是否有条件遗漏。
4.数据库端的程序编写可以进行面向对象思想的包装,如果发现某一系列相同的操作过多,则对代码进行重构,封装(例如增加自定义函数等)。
5.在ViewCode1中:truncate table dbo.LGPremoverDataCampaignHistory 将该表进行快速删除。详情:使用 TRUNCATE TABLE 删除所有行
6.在ViewCode2中:SELECT @dateDiffValue= DATEDIFF(WEEK,(SELECT TOP 1 CONVERT(VARCHAR(10),EnteredDate,121) FROM dbo.LGTobeOrder_CCBatch),GETDATE()) ,本例计算是否在本周内。经测试上周日到本周六在同一个星期内,此应为美国周标准,测试说明:若值为1则说明两个日期相差一周且startdate在当前日期enddate的上一周;当值为0则说明两个日期在同一周内;当值为-1则说明两个日期相差一周且startdate在当前日期enddate的下一周。
个人体会:
1.一定要把数据库的语法掌握熟练,就像做编程一样,只有熟练掌握了基本的语法,再复杂的业务逻辑或技术难题都能一点一点地解决。
2.学习技术可以先应用,但如果想学精并与其他的技术相通,就一定要学习其原理。(本人菜鸟一枚,在此建议各位像我一样的菜鸟)
存储过程实例总结(开发中的错误与总结,调试,数据库函数DATEDIFF计算当前日期是否在本周内)的更多相关文章
- EBS OAF开发中的错误/异常处理(ErrorHandling) (转)
原文地址 EBS OAF开发中的错误/异常处理(ErrorHandling) EBS OAF开发中的错误/异常处理(ErrorHandling) (版权声明,本人原创或者翻译的文章如需转载,如转载用于 ...
- ios开发——错误总结篇&开发中常见错误和警告总结(四)
ios开发——开发总结&开发中常见错误和警告总结(四) 网易彩票实战总结(错误) 错误总结之类的实现 经典错误之重复定义与导入错误 经典错误关于父类的实现 通知对象: 控制器的定义 Xcode ...
- Python基础教程(011)--程序开发中的错误及原因
前言 排查代码开发中的错误 内容 1,编写的程序不能正常执行,或者执行的结果不是我们期望的 2,俗称bug,是程序开发常见的,初学常见的原因有 手误 对已经学习的知识点理解不足 对语音还有需要学习和提 ...
- iOS开发中视图控制器ViewControllers之间的数据传递
iOS开发中视图控制器ViewControllers之间的数据传递 这里我们用一个demo来说明ios是如何在视图控制器之间传递重要的参数的.本文先从手写UI来讨论,在下一篇文章中讨论在storybo ...
- 浅谈开发中python通过os模块存储数据
#其实本人很烦发博客,但为了面试还是发一下好,证明一下自己的能力 前言 首先说一下适用环境,在开发中我们有一些经常用到的数据(数据量大)需要存储起来. 存sql嘛又不合适,要知道在开发中每条sql语句 ...
- iOS开发中的错误整理,IOS9中canOpenURL调用失败分析
由于IOS加入对用户隐私以及禁止扫描系统信息的控制,目前通过canOpenURL的方法来判断用户是否安装特定app,则会出现-canOpenURL: failed for URL: "ABC ...
- iOS开发中的错误整理,通过storyboard做项目,遇到view看不见,或者view被压缩的情况
前言:在网易新闻的练习中遇到了这个错误 注意:练习中遇到了如图的bug,主要是因为用storyboard布局 600 * 600 显示的时候要经过自动布局,缩小到相应手机的屏幕大小.也就是有的尺寸 ...
- spring开发中常见错误集合,逐步添加
1.关于jstl错误:原因,在jsp页面中使用了jstl标签库,但是却没有导入,可以将相应的jar包放在tomcat的lib目录下,一劳永逸 Java.lang.NoClassDefFoundErro ...
- iOS开发中的错误整理,Changing the delegate of a tab bar managed by a tab bar controller is not allowed
iOS [错误:'Changing the delegate of a tab bar managed by a tab bar controller is not allowed.'] 错误:'Ch ...
随机推荐
- 菜鸟的MySQL学习笔记(四)
MySQL中的运算符和函数: 1.字符函数: 2.数值运算符与函数: 3.比较运算符与函数: 4.日期时间函数: 5.信息函数: 6.聚合函数: 7.加密函数等: 6-1.字符函数: CONCAT ...
- MySQL数据库原理
我们知道,数据是信息的载体——一种我们约定了如何解释的符号.在计算机系统中,最常见的应该是文本数据.我们用它记录配置信息,写日志,等等.而在应用程序中,按一定的数据结构来组织数据的方式叫做数据库管理系 ...
- PHP实现斐波那契数列非递归方法
斐波那契数列,又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n ...
- TDirectory.GetCreationTime、TDirectory.SetCreationTime获取和设置文件夹创建时间
使用函数: System.IOUtils.TDirectory.GetCreationTime//获取创建时间 System.IOUtils.TDirectory.SetCreationTime//设 ...
- NSString NSMutableString copy mutableCopy retain weak strong整合
copy retain assign的差别在于对象属性的set方法 NSString 与 NSMutableString NSString是不可变字符串对象,这句话的意思,结合代码: #import ...
- C++ 11 笔记 (一) : lambda
时至今日都是我咎由自取,错就是错,与任何人无关.掉进C++98的各种坑里无法自拔的抖M感,让我选择了华丽丽的无视C++11,导致今日面对开源的代码到各种看不懂的地步,一入C++深似海,我今天愿意承担一 ...
- MVC5框架解析之Controller的创建
在上一讲中我们介绍了MvcHandler,知道在Handler里面注入两个接口属性分别为IControllerFactory和IController的factory和controller.并且通过IO ...
- Java多线程初学者指南(11):使用Synchronized块同步方法
synchronized关键字有两种用法.第一种就是在<使用Synchronized关键字同步类方法>一文中所介绍的直接用在方法的定义中.另外一种就是synchronized块.我们不仅可 ...
- [原博客] BZOJ 2242 [SDOI2011] 计算器
题目链接 noip级数论模版题了吧.让求三个东西: 给定y,z,p,计算`Y^Z Mod P` 的值. 给定y,z,p,计算满足`xy≡ Z ( mod P )`的最小非负整数. 给定y,z,p,计算 ...
- 关于ADMM的研究(一)
关于ADMM的研究(一) 最近在研究正则化框架如何应用在大数据平台上.找到了<Distributed Optimization and Statistical Learning via the ...