2012-09-24 45 views
1

最近在一個站點,我們有很多丟失的圖像,我不得不恢復。該網站是一家醫院,我能夠恢復所有圖像,並將所有內容放入臨時表格中,包括受到影響的:遇到的病歷號碼,文檔和副標題。我現在試圖創建一個長文本文件來顯示每個受到影響的遭遇,如果有一個遭遇的文件,它會顯示所有遇到的文件。每個受影響的帳戶將以文件中的%% START開頭,並以%% END結尾。我想完成這一點,最好是做一個遊標來排序這個表中的遇到的事情。 THen ....光標通過遇到的所有文檔包含遇到。我的腳本是這樣的:光標在另一個光標的內部沒有返回正確的結果

declare 
@name varchar(40), 
@mrn varchar(20), 
@encounter varchar(20), 
@document varchar(30), 
@subtitle varchar(30), 
@cmd varchar(255), 
@count int 

declare find_affected cursor for 
select distinct p.name, m.mrn, m.encounter from mck_hpf..missing_documents m 
join his..patients p on m.mrn=p.mrn 


open find_affected 

fetch next from find_affected into @mrn, @name, @encounter while 
@@FETCH_STATUS=0 

begin 
select @mrn = mrn from mck_hpf.dbo.missing_documents where encounter = @encounter 
select @name=name from his.dbo.patients where [email protected] 
select @encounter = encounter from mck_hpf.dbo.missing_documents where encounter = @encounter 
Print '%%START' 
Print '' 
Print 'Name:    ' + @name 
Print 'MRN:    ' + @mrn 
Print 'Encounter:   ' + @encounter 
Print 'Possible affected documents in this chart:' 

declare find_document cursor for 
select distinct(document), subtitle from mck_hpf..missing_documents m 
join his..encounters e on e.encounter=m.encounter where @mrn=m.mrn and @encounter=m.encounter 

open find_document 
fetch next from find_document into @document, @subtitle 
while @@FETCH_STATUS=0 
begin 
select @document = document from mck_hpf.dbo.missing_documents where encounter = @encounter 
select @subtitle = subtitle from mck_hpf.dbo.missing_documents where encounter = @encounter and [email protected] 
Print @document + '-' + @subtitle 
fetch next from find_document into @document, @subtitle 
end 
close find_document 
deallocate find_document 
Print '' 
Print '' 
Print '%%END' 


fetch next from find_affected into @mrn, @name, @encounter 
end 
close find_affected 
deallocate find_affected 
go 

該腳本好,循環通過正確的遭遇.....但由於某種原因它不工作的文件。例如....遭遇123在missing_documents表可以說2個文件名爲UB04和1500 ....當腳本完成的,而不是說:這個圖表中

Name:    Mickey Mouse       
MRN:    11111111   
Encounter:   123456789 

可能受影響的文件:

UB04        
1500 

它會說:

Name:    Mickey Mouse       
MRN:    11111111   
Encounter:   123456789   

可能受影響的文件,此圖中:

UB04        
UB04 

這就像光標知道有2個丟失的文檔,但它重複了它一遍又一遍地找到的第一個文檔。 IT對所有的遭遇都這樣做......如果有6個丟失的文檔,它會提取第一個文檔並不斷重複。

IT花了我一段時間才弄到這一點,讓它工作,我只是不知道該從哪裏走,因爲我認爲我的代碼看起來是正確的。我在這裏搜索,但沒有發現任何可以幫助我的東西。任何幫助,將不勝感激。謝謝您

回答

1

您正在重置打印語句上方的@subtitle。 。 。

select @document = document from mck_hpf.dbo.missing_documents where encounter = @encounter 
select @subtitle = subtitle from mck_hpf.dbo.missing_documents where encounter = @encounter and [email protected] 
Print @document + '-' + @subtitle 

如果你想從第二光標看到的值,做打印之前的選擇:

Print @document + '-' + @subtitle; 
select @document = document from mck_hpf.dbo.missing_documents where encounter = @encounter ; 
select @subtitle = subtitle from mck_hpf.dbo.missing_documents where encounter = @encounter and [email protected]; 
+0

戈登....我的這樣一個愚蠢的錯誤....謝謝你非常喜歡第二套眼睛! –