sqlserver oracle-sqlserver语句转oracle

问题描述

sqlserver语句转oracle

求大神们解答。下面是sqlsever

declare @FaultID nvarchar(50)
declare @filePath nvarchar(500)
set @FaultID = '{0}'
set @filePath = ''
declare @ReportLogID nvarchar(50)

Declare CaseCur Cursor for
select ReportLogID from " + LogDataBase + @"T_FORM_ReportLogFault where FaultID = @FaultID order by ModifyDate desc
Open CaseCur
Fetch Next From CaseCur into @ReportLogID
While @@FETCH_STATUS = 0 Begin

    if exists(select * from " + LogDataBase + @"T_FORM_FormTableReportItemDataLog where genTableResultID= @FaultID and ID =@ReportLogID )

begin
select top 1 @filePath = FilePath from " + LogDataBase + @"T_FORM_FormTableReportItemDataFiles
where ReportItemDataLogID = @ReportLogID
order by CreateDate desc
--print 'aa'
end
else
begin
select top 1 @filePath = FilePath from " + LogDataBase + @"T_FORM_FormTableReportItemDataFiles
where ReportItemDataLogID = @ReportLogID
and fieldid in(select formTableReportitemid from
T_FORM_FormTableReportItemMatch m ,T_CUS_Fault_Case c
where m.FaultType = c.FaultType and c.ID=@FaultID)
order by CreateDate desc
--print 'bb'
end
if @filePath <> '' begin

break;
end
Fetch Next From CaseCur into @ReportLogID
--print @filePath

    End

Close CaseCur
Deallocate CaseCur

if exists(select * from " + LogDataBase + @"T_FORM_FormTableReportItemDataLog where genTableResultID= @FaultID and ID =@ReportLogID )
begin
select * from " + LogDataBase + @"T_FORM_FormTableReportItemDataFiles
where ReportItemDataLogID = @ReportLogID
order by CreateDate desc
--print 'aa'
end
else
begin
select * from " + LogDataBase + @"T_FORM_FormTableReportItemDataFiles
where ReportItemDataLogID = @ReportLogID
and fieldid in(select formTableReportitemid from
T_FORM_FormTableReportItemMatch m ,T_CUS_Fault_Case c
where m.FaultType = c.FaultType and c.ID=@FaultID)
order by CreateDate desc
--print 'bb'
end

----------------------------------这里是改了一半的oracle---------------------------------------------Declare
vFaultID varchar2(50);
vfilePath varchar2(500);
vReportLogID varchar2(50);
counts number :=0;
cursor CaseCur is select ReportLogID from T_FORM_ReportLogFault where FaultID = vFaultID order by ModifyDate desc;
begin
vFaultID:='{0}';
vfilePath:=' ';
select count(*) into counts from D_Log where genTableResultID= vFaultID and ID =vReportLogID;
open CaseCur;
loop
fetch CaseCur into vReportLogID;
exit when CaseCur%notfound;
if counts>0 then
select FilePath into vfilePath from (select FilePath from (select FilePath from D_Files
where ReportItemDataLogID = vReportLogID
order by CreateDate desc) where rownum=1);
else
select FilePath into vfilePath from (select FilePath from (select FilePath from D_Files
where ReportItemDataLogID = vReportLogID
and fieldid in(select formTableReportitemid from
F_LevelMatch m ,T_CUS_Fault_Case c
where m.FaultType = c.FaultType and c.ID=vFaultID)
order by CreateDate desc)where rownum=1);
end if;
if vfilePath<>' 'then
exit;
end if;
end loop;
close CaseCur;
if counts>0then
select * from D_Files
where ReportItemDataLogID = vReportLogID
order by CreateDate desc;
else
select * from D_Files
where ReportItemDataLogID = vReportLogID
and fieldid in(select formTableReportitemid from
F_LevelMatch m ,T_CUS_Fault_Case c
where m.FaultType = c.FaultType and c.ID=vFaultID)
order by CreateDate desc;
end if;
end;
--------------------------请大神们看一下oracle部分的语法是否和sqlsever的逻辑一致。然后oracle部分的最好两个select * from ..会报错,缺少into ,求大神告知怎么修改

解决方案

游标建议改为带参游标

declare
FaultID varchar2(50);
ReportLogID varchar2(50);
filePath varchar2(500);
CURSOR CaseCur(fid varchar2) IS select ReportLogID from T_FORM_ReportLogFault where FaultID = fid order by ModifyDate desc;
begin
FaultID = '{0}'
open CaseCur(FaultID) ;
loop
fetch CaseCur into ReportLogID ;
exit when CaseCur%notfound;
end loop;
end;

时间: 2024-07-30 11:16:25

sqlserver oracle-sqlserver语句转oracle的相关文章

oracle查询语句大全(oracle 基本命令大全一)

来源:http://www.jb51.net/article/40467.htm 1.create user username identified by password;//建用户名和密码oracle ,oracle 2.grant connect,resource,dba to username;//授权 grant connect,resource,dba,sysdba to username; 3.connect username/password//进入. 4.select tabl

oracle查询语句大全(oracle 基本命令大全一)_oracle

1.create user username identified by password;//建用户名和密码oracle ,oracle 2.grant connect,resource,dba to username;//授权 grant connect,resource,dba,sysdba to username; 3.connect username/password//进入. 4.select table_name,column_name from user_tab_columns

oracle sql语句 求sql语句

问题描述 oracle sql语句 求sql语句 数据源: 图片自动说明: 日期,投诉次数,分公司ID,分公司,投诉类别 环比:取查询日期的前一天,如:20150720,环比20150719 结果: 每万用户投诉比 每万用户投诉比环比增幅 个人投诉总次数 个人投诉环比增幅 集团投诉总次数 集团投诉环比增幅 解决方案 oracle sql语句优化Oracle用SQL语句分页 解决方案二: 分公司总用户数都没有,哪里来的每万用户投诉比? 解决方案三: 用decode吧,参考这个sql select

sqlserver的sql语句转成oracle

问题描述 sqlserver的sql语句转成oracle SELECT FF.*, AF.FUNCGROUPNAME FROM (SELECT F.FUNCCODE,F.FUNCNAME,F.ISMENU,F.FUNCGROUPID, (CASE WHEN PARTY_ID IS NULL THEN 0 ELSE 1 END) ISCHECK FROM APP_FUNCTION F LEFT JOIN CAP_RESAUTH CR ON F.FUNCCODE = CR.RES_ID AND CR

在JSP中访问Oracle ,SqlServer ,DB2, Informix ,Access 数据库

access|js|oracle|server|sqlserver|访问|数据|数据库 在JSP中访问Oracle ,SqlServer ,DB2, Informix ,Access 数据库现在有好多初学jsp的网友经常会问数据库怎么连接啊,怎么老出错啊?所以我集中的在这写篇文章供大家参考,其实这种把数据库逻辑全部放在jsp里未必是好的做法,但是有利于初学者学习,所以我就这样做了,当大家学到一定程度的时候,可以考虑用MVC的模式开发.在练习这些代码的时候,你一定将jdbc的驱动程序放到服务器的类

sql server-如何将SQLServer的数据库迁移至ORACLE数据库里

问题描述 如何将SQLServer的数据库迁移至ORACLE数据库里 目前有一个SQL Server的数据库,我的任务是将这个数据库弄到Oracle数据库里.我使用过ORACLE sql Developer迁移数据, 但是在移植向导时报错java.lang.NullPointerExcetion错误! 解决方案 http://www.cnblogs.com/luoshengmen/p/3952155.html 解决方案二: 导出时报出了这个错误!!! 解决方案三: 最好的办法,通过编程,逐个表地

将以下的sqlserver的函数写成oracle的函数怎么改?

问题描述 将以下的sqlserver的函数写成oracle的函数怎么改? ALTER function [dbo].getSubDepartment) returns @tabinfo table(deptid NUMERIC(20),deptname varchar(100),parentid numeric(20),level int) as begin declare @cid int set @cid = 1 insert @tabinfo select deptid,deptname,

oracle sql语句性能优化

oracle|性能|优化|语句 1.选用适合的ORACLE优化器ORACLE的优化器共有3种 A.RULE (基于规则) b.COST (基于成本) c.CHOOSE (选择性) 设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你当然也在SQL句级或是会话(session)级对其进行覆盖. 为了使用基于成本的优化器(CBO, Cost-Based Optimizer) ,

Oracle SQL语句处理过程

oracle|过程|语句 07年开始,换了一家公司,数据库使用的是ORACLE10G,以前一直使用的是INFORMIX和MSSERVER,感觉ORACLE功能还真强大,比Informi和msserver都好用多啦,体系结构和管理方式都有了许多变化,但使用两个月下来,其实数据库的基本原理是一样的,现结合以前的工作经验和学习的资料,总结ORACLE数据库的一些知识,今天先写Oracle SQL语句处理过程:            一般来说,数据库处理SQL都会经过三个过程:分析.执行.返回结果,比如