我们有大约150个使用* =和= *类型ANSI92的旧样式查询和视图?加入。 有没有人知道可以帮助转换的工具/方法或脚本,或者我们是否只需要浏览所有150个。
由于
Select PapersSent,
DateSent,
Code,
ActionDate,
ClientAction,
ClientContactRef,
PublishAppraisal,
PublishCV,
SponsorContactREF,
MeetingNotes,
InternalNotes,
Contact_AdminAction,
MeetingLocation
from tblMeetingNotes a,
tblPapersOptions b,
tblContactLog c
where a.CREF=@CREF and
a.CLID=@CLID AND
Isnull(PapersSent,0)*=Value AND
a.CREF*=c.CREF AND
a.CLID*=c.Contact_ID
答案 0 :(得分:2)
这可能不是您希望听到的,但这种工具并不存在。在某些情况下,旧样式JOIN不会干净地转换为SQL-92样式,导致查询提供不同的结果,甚至需要重写查询。
即使有一个工具可以自动转换连接,你仍然需要测试每个查询以确保它转换成你想要的方式,创建的工作量可能和它一样多。手。
Erland Sommarskog对如何快速将旧样式连接转换为SQL-92有一个很好的分步过程:http://www.sommarskog.se/Become-an-ANSI-star.doc
答案 1 :(得分:1)
在转换之前,我肯定会看到设置某种测试框架,以便您可以比较结果。
如果所有这些都是视图,或者如果您可以将输出输出到表中,这将是最简单的。
此时,您可以使用诸如EXCEPT之类的内容来确保所有行都匹配。
过去,我使用存储过程生成表格比较代码,这些过程采用表格/视图并生成比较。甚至包括数量差异的数值/百分比阈值,其中一组具有尴尬的舍入问题 - 如银行家的舍入(Teradata)或基于IEEE浮动点的舍入(WebFocus)。
答案 2 :(得分:0)
您可以编写数据库脚本并使用搜索和替换来更改其大部分并手动检查更难的情况。如mfredrickson指出的那样,请确保在输出发生变化时彻底测试所有查询。
为了帮助进行搜索,尽管如果您编写数据库脚本并非绝对必要,请下载Redgate's SQL Search(它是免费的)以帮助您查找所有实例。即使您不将它用于此任务,也很方便。