Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Chriss Miller on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

help with a cursor

Status
Not open for further replies.

Crystalguru

Technical User
Oct 4, 2001
303
US
I am using MS SQL Server 2000

Can someone tell me why the following sql only returns the first cursor set?


ALTER PROC Top_3_Results_R_Pr
AS

-- variables for cursor-obtained values
DECLARE
@ChartGUID varchar(16)
,@ClientDisplayName varchar(50)
, @ClientGUID varchar(16)


-- make table for set of 3 Results
CREATE TABLE #TopResults (
ResultGUID numeric(16)
, ClientDisplayName varchar(50)
, ClientGUID varchar(16)
, ChartGUID varchar(16)
, ItemName varchar(40)
, ArrivalDTM datetime
, Value varchar(60)
)

-- get current client list into temp table - only patients that have active Diet Orders
SELECT DISTINCT
CV3ClientVisit.ChartGUID AS ChartGUID
, CV3ClientVisit.ClientDisplayName
, CV3ClientVisit.ClientGUID
INTO #client_info
FROM
CV3ClientVisit (nolock)
INNER JOIN CV3Order (nolock)
ON CV3ClientVisit.ClientGUID = CV3Order.ClientGUID
AND CV3ClientVisit.ChartGUID = CV3Order.ChartGUID
AND CV3Order.OrderStatusLevelNum = 50
INNER JOIN CV3OrderCatalogMasterItem OC (nolock)
ON CV3Order.OrdercatalogmasteritemGUID = OC.GUID
AND OC.OrgUnitGUID = 1006083001
OR OC.OrgUnitGUID = 1000001006083001

-- for each patient, get last 3 Results
DECLARE Cur_list CURSOR FOR
SELECT ChartGUID, ClientDisplayname,ClientGUID FROM #client_info

OPEN Cur_list


FETCH NEXT FROM Cur_list
INTO @ChartGUID
,@ClientDisplayName
, @ClientGUID

WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO #TopResults
SELECT TOP 3
CV3BasicObservation.GUID
, CV3ClientVisit.ChartGUID
, CV3ClientVisit.ClientDisplayName
, CV3ClientVisit.ClientGUID
, CV3BasicObservation.ItemName
, CV3BasicObservation.ArrivalDTM
, CV3BasicObservation.Value
FROM CV3ClientVisit
INNER JOIN CV3BasicObservation -- not left outer
ON (CV3ClientVisit.ClientGUID = CV3BasicObservation.ClientGUID)
AND (CV3ClientVisit.ChartGUID = CV3BasicObservation.ChartGUID)
WHERE (
CV3ClientVisit.ChartGUID = @ChartGUID
AND CV3ClientVisit.ClientGUID = @ClientGUID
)
AND (
/* Result Name */
CV3BasicObservation.ItemName = 'Albumin'
)
ORDER BY CV3BasicObservation.ArrivalDTM DESC
FETCH NEXT FROM Cur_list
INTO @ChartGUID
,@ClientDisplayName
,@ClientGUID

END
CLOSE Cur_list
DEALLOCATE Cur_list
DECLARE Cur_list CURSOR FOR
SELECT ChartGUID, ClientDisplayName, ClientGUID FROM #client_info

OPEN Cur_list

FETCH NEXT FROM Cur_list
INTO @ChartGUID
,@ClientDisplayName
,@ClientGUID

WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO #TopResults
SELECT TOP 3
CV3BasicObservation.GUID
, CV3ClientVisit.ChartGUID
, CV3ClientVisit.ClientDisplayName
, CV3ClientVisit.ClientGUID
, CV3BasicObservation.ItemName
, CV3BasicObservation.ArrivalDTM
, CV3BasicObservation.Value
FROM CV3ClientVisit
INNER JOIN CV3BasicObservation -- not left outer
ON (CV3ClientVisit.ClientGUID = CV3BasicObservation.ClientGUID)
AND (CV3ClientVisit.ChartGUID = CV3BasicObservation.ChartGUID)
WHERE (
CV3ClientVisit.GUID = @ChartGUID
AND CV3ClientVisit.ClientGUID = @ClientGUID
)
AND (
/* Result Name */
CV3BasicObservation.ItemName = 'Prealbumin'
)
ORDER BY CV3BasicObservation.ArrivalDTM DESC
FETCH NEXT FROM Cur_list
INTO @ChartGUID
,@ClientDisplayName
, @ClientGUID

END
CLOSE Cur_list
DEALLOCATE Cur_list

-- Get and return results
SELECT #TopResults.ResultGUID
, #TopResults.ChartGUID
, #TopResults.ClientDisplayName
, #TopResults.ClientGUID
, #TopResults.ResultGUID
, #TopResults.ItemName
, #TopResults.ArrivalDTM
, #TopResults.Value
FROM #TopResults
Order by 3, 6, 7 DESC




 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top