问题描述
1.我们在sql server中有一个过程,其中包含许多临时表,现在我正在尝试将该过程转换为oracle过程。
所以我的问题是我应该使用临时表还是有其他可能性?
sql server示例代码:
---> 请帮助我解决此问题
谢谢
所以我的问题是我应该使用临时表还是有其他可能性?
sql server示例代码:
Select ROW_NUMBER() over(order by WorkDate) id , Id , WorkDate into #TmpBlock1 from TechWorkTime (nolock) where WorkDate =@WorkDate and CompanyId=@CompanyId and TechId = ISNULL(@TechId,TechId) select @MinId = min(id), @MaxId = max(id) from #TmpBlock1 while (@MinId <= @MaxId) begin selectfrom #TmpBlock1 where id = @MinId insert into #TmpTechWorkTime3Blocks ( ) Select from where WorkDate = @WorkDatess and CompanyId=@CompanyId and TechId = ISNULL(@Id,Id) set @MinId = @MinId + 1 end 复制
---> 请帮助我解决此问题
谢谢
专家解答
临时表在SQL Server中很常见,但在Oracle数据库中很少见。如果你经常使用它们,这通常是你做错了事的标志!
经常迁移时,您可以使用子查询分解/公共表表达式替换临时表。例如,您的前两个查询可能会变成:
但是通常最好回到第一原则,了解代码在做什么,然后在Oracle中重新实现它。例如,在我看来,您正在将查询结果插入TmpTechWorkTime3Blocks。可以简化为:
但是如果你想要更多的帮助,你必须给我们更多的细节。
经常迁移时,您可以使用子查询分解/公共表表达式替换临时表。例如,您的前两个查询可能会变成:
with tmp_blk as ( Select ROW_NUMBER() over(order by WorkDate) id , Id , WorkDate from TechWorkTime where WorkDate =:WorkDate and CompanyId=:CompanyId and TechId = nvl(:TechId,TechId) ), mn_mx as ( select min(id) minid, max(id) MaxId from tmp_blk ) select * from mn_mx;复制
但是通常最好回到第一原则,了解代码在做什么,然后在Oracle中重新实现它。例如,在我看来,您正在将查询结果插入TmpTechWorkTime3Blocks。可以简化为:
insert into TmpTechWorkTime3Blocks Selectfrom your_query 复制
但是如果你想要更多的帮助,你必须给我们更多的细节。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
655次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
625次阅读
2025-04-15 17:24:06
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
530次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
479次阅读
2025-04-22 00:20:37
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
475次阅读
2025-04-17 17:02:24
一页概览:Oracle GoldenGate
甲骨文云技术
457次阅读
2025-04-30 12:17:56
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
449次阅读
2025-04-22 00:13:51
火焰图--分析复杂SQL执行计划的利器
听见风的声音
405次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
369次阅读
2025-04-15 14:48:05
Oracle数据库Hint大全,31个使用案例,速来下载!
陈举超
343次阅读
2025-04-16 21:25:19