1

最近在一个站点,我们有很多丢失的图像,我必须恢复。该站点是一家医院,我能够恢复所有图像并将所有内容放入一个临时表中,其中包括受影响的:遭遇、病历编号、文档和字幕。我现在正在尝试创建一个长文本文件来显示每个受影响的遭遇,如果该遭遇有多个文档,它将显示该遭遇的所有文档。每个受影响的帐户将在文件中以 %%START 开头并以 %%END 结尾。我想要做到这一点,最好做一个游标来对这张表中的遭遇进行排序。然后....光标浏览该遭遇的所有文件以包括该遭遇。我的脚本如下所示:

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 mrn=@mrn
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 document=@document
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 个文档,它会拾取第一个并不断重复。

我花了一段时间才达到这一点并让它工作,我只是不知道从哪里开始,因为我认为我的代码看起来是正确的。我在这里搜索但没有找到任何可以帮助我的东西。任何帮助,将不胜感激。非常感谢你

4

1 回答 1

1

您正在重置 print 语句正上方的 @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 document=@document
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 document=@document;
于 2012-09-24T18:21:20.947 回答