存储过程实例总结(开发中的错误与总结,调试,数据库函数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 ...
随机推荐
- 转:android中APK开机自动运行
背景知识:当Android启动时,会发出一个系统广播,内容为ACTION_BOOT_COMPLETED,它的字符串常量表示为android.intent.action.BOOT_COMPLETED.只 ...
- css实现的透明三角形
css实现下图样式,具体像素值记不住了,很好设置,html code (2014百度秋招面试题): <div id="demo"></div> 分析:这 ...
- 学习PHP爬虫--《Webbots、Spiders和Screen Scrapers:技术解析与应用实践(原书第2版)》
<Webbots.Spiders和Screen Scrapers:技术解析与应用实践(原书第2版)> 译者序 前言 第一部分 基础概念和技术 第1章 本书主要内容3 1.1 发现互联网的真 ...
- USB驱动能力有限
笔者用USB接一个单片机最小系统,再从单片机最小系统引出电源线接一个数字电路模块.当后边两部分的功率较大时,就会引起USB电压的下降,甚至到3V左右.电压的下降就会使单片机或者数字电路部分芯片不能正常 ...
- 监控持有sql和被堵塞的sql
Session 1: mysql> start transaction; Query OK, 0 rows affected (0.00 sec) mysql> update Client ...
- B*tree dump
Oracle的索引是以平衡树的方式组织存储的:保存的是索引列的值,以及该行的rowid的一部分(文件号,块号,行号) 下面我们通过例子来了解一下: 1,create table test(id int ...
- 你们都是怎么阅读android系统源码的,用什么工具?
如果是eclipse,可以建立java或者c++工程,把framework源码导入.packages目录下的可以建立android工程.sourceinsight的话,建立工程把相应模块的代码添加进去 ...
- pcDuino安装vnc进行远程控制
准备工作: 已经刷好的 pcduino : 点此购买 可选用显示器或者用ssh连接,ssh连接参考 无显示器刷机与使用 1.安装x11vnc 输入下面的命令: sudo apt-get insta ...
- Java 编程下 Eclipse 如何设置单行代码显示的最大宽度
Eclipse 下一行代码的默认宽度是 80 , 稍长一点的一行代码就会自动换行,代码可读性较差,我们可以自己在 Eclipse 对代码宽度进行设置. 设置路径为:[Window]→[Preferen ...
- 利用dhtmlxGrid做的表格排序的功能。
dhtmlxGrid支持tree和grid. grid之间.grid内部进行拖拽, 如在grid内部进行拖拽,可以增加一行:在grid之间拖拽,第一个grid的记录删除,第二个grid增加一行记录.