Solved

Stored Procedure Loop Throug Date Range

Posted on 2014-04-02
4
1,904 Views
Last Modified: 2014-04-02
I am running a stored procedure which returns and execute on a single date but is there a way to loop through the stored procedure to call a date range instead versus I manually entering 1 date at a time?  Thanks!


USE [Dev]

--Run the Appraisal proc passing in a few required parameters 
Declare @ReportData varbinary(max)
Exec dbo.pAppraisal
@ReportData = @ReportData out, 
@Portfolios = '1234567', 
@Date = '2014-3-31',
@IncludeUnsupervisedAssets = 1,
@IncludeClosedPortfolios = 1

Select c.PortfolioBaseCode, c.ReportHeading1
, a.SecTypeCode, b.Symbol, b.FullName
, a.MarketValue, vs.IsUnsupervised
From dbo.fAppraisal(@ReportData) a
join dbo.vSec b on a.SecurityID = b.SecurityID
join dbo.vSecVariant vs on vs.SecurityID = a.SecurityID AND vs.IsShort = a.IsShortPosition AND vs.SecTypeCode = a.SecTypeCode
join dbo.vPortBase c on a.PortfolioBaseID = c.PortfolioBaseID

Open in new window

0
Comment
Question by:KANEDA 0149
  • 2
  • 2
4 Comments
 
LVL 38

Accepted Solution

by:
Jim P. earned 500 total points
ID: 39972753
Try something like this. You'll have to build the #TempTbl field types out. But it should be able to get the results into a table. I also don't know the dates as well.

USE [Dev]

--Run the Appraisal proc passing in a few required parameters 
IF OBJECT_ID('tempdb..#TempTbl') IS NOT NULL
BEGIN
    DROP TABLE #TempTbl
END
-- edit to declare the table's field types.
create table #TempTbl (	c.PortfolioBaseCode, c.ReportHeading1
					, a.SecTypeCode, b.Symbol, b.FullName
					, a.MarketValue, vs.IsUnsupervised,
						RptDate datetime ,
						RowID integer Identity(1,1))

Declare @ReportData varbinary(max)
Declare @RptDate as datetime

select @RptDate = '2014-02-28'
While @RptDate < '2014-03-31'
begin 

	Exec dbo.pAppraisal
	@ReportData = @ReportData out, 
	@Portfolios = '1234567', 
	@Date = @RptDate, 
	@IncludeUnsupervisedAssets = 1,
	@IncludeClosedPortfolios = 1

	insert into c.PortfolioBaseCode, c.ReportHeading1
				, a.SecTypeCode, b.Symbol, b.FullName
				, a.MarketValue, vs.IsUnsupervised, RptDate
	Select c.PortfolioBaseCode, c.ReportHeading1
	, a.SecTypeCode, b.Symbol, b.FullName
	, a.MarketValue, vs.IsUnsupervised, @RptDate
	From dbo.fAppraisal(@ReportData) a
	join dbo.vSec b on a.SecurityID = b.SecurityID
	join dbo.vSecVariant vs on vs.SecurityID = a.SecurityID AND vs.IsShort = a.IsShortPosition AND vs.SecTypeCode = a.SecTypeCode
	join dbo.vPortBase c on a.PortfolioBaseID = c.PortfolioBaseID
 
	select @RptDate = dateadd(day,1 , @RptDate)
end

select	* from #TempTbl

Open in new window

0
 

Author Closing Comment

by:KANEDA 0149
ID: 39973138
Thanks Jim, it worked perfectly when I defined my temp table.  Would I be able to contain all of this in another stored procedure?  Just wondering.
0
 
LVL 38

Expert Comment

by:Jim P.
ID: 39973201
You should be able to wrap it into an SP:

CREATE PROCEDURE cp_Build_Appraisals @LastDate as datetime
-- I'm not sure how to get a table back from an SP off hand.
AS
BEGIN
...
-- I would change this chunk to the reporting periods you want
select @RptDate = dateadd(day,-30, @LastDate)
While @RptDate <= @LastDate
....
END

Open in new window


Something like this should work. You'll have to figure out how to return the resultant table. And I'm show how to do it on a thirty day from the input date. But you could also input a start and end date. Either way it should be relatively easy.
0
 

Author Comment

by:KANEDA 0149
ID: 39973479
Cool, thank you again Jim!
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

If you have heard of RFC822 date formats, they can be quite a challenge in SQL Server. RFC822 is an Internet standard format for email message headers, including all dates within those headers. The RFC822 protocols are available in detail at:   ht…
This article explains how to reset the password of the sa account on a Microsoft SQL Server.  The steps in this article work in SQL 2005, 2008, 2008 R2, 2012, 2014 and 2016.
This videos aims to give the viewer a basic demonstration of how a user can query current session information by using the SYS_CONTEXT function
Viewers will learn how to use the UPDATE and DELETE statements to change or remove existing data from their tables. Make a table: Update a specific column given a specific row using the UPDATE statement: Remove a set of values using the DELETE s…

856 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question