我需要将以下功能从DB2转换为Oracle,有人可以帮忙吗?我对DB2一无所知

问题描述

我需要将以下功能从DB2转换为Oracle,有人可以帮忙吗?我对DB2一无所知:

CREATE FUNCTION READMSGS(   SOURCE_NAME    VARCHAR(12),SOURCE_SCHEMA  VARCHAR(12),SOURCE_VERSION    VARCHAR(64),EXPLAIN_LEVEL     CHAR(1))                            
RETURNS TABLE ( ID varchar(20),DEPTNUM INT,AVGSAL DECIMAL (9,2),EMPCNT INT,WORKDEPT INT )
  LANGUAGE SQL
  DETERMINISTIC
  NO EXTERNAL ACTION
  READS SQL DATA
  RETURN 
  
  SELECT       ID,DEPTNUM,AVGSAL,EMPCNT,WORKDEPT
  FROM EMP3  ;

解决方法

所有未使用的参数都很奇怪。如果未使用,则需要将其删除。

对我来说看起来很简单,它只是从函数中返回自定义表/类型。这是我为解决您的问题而付出的努力

第一步是创建自定义类型,如果没有的话

create or replace type CustomerType(
        ID Varchar2(20),DEPTNUM Number,AVGSAL Number,EMPCNT Number,WORKDEPT Number
    ); 

plsql中的第二次修改函数

FUNCTION EXPLAINSMSGS(SOURCE_NAME in VARCHAR2,SOURCE_SCHEMA in VARCHAR2,SOURCE_VERSION in VARCHAR2,EXPLAIN_LEVEL in Varchar2) return record is
  l_customType   CustomerType;
  l_ID Varchar2(20);
  l_DEPTNUM Number;
  l_AVGSAL Nubmer;
  l_EMPCNT Number,l_WORKDEPT Varchar2(100);

  Begin
    SELECT     ID,DEPTNUM,AVGSAL,EMPCNT,WORKDEPT
    INTO       l_ID,l_DEPTNUM,l_AVGSAL,l_EMPCNT,l_WORKDEPT  
  FROM EMP3  ;

  l_customType :=CustomerType(l_ID,l_WORKDEPT);

  Return l_customType;

  End;
,

DB2函数被声明为DETERMINISTIC。这意味着它将为n次调用返回相同的行集。浏览此DB2代码,您将不需要Oracle中的函数,而只需像

中那样为select语句创建视图。
  CREATE VIEW explainmsgs AS
      SELECT  
            id,deptnum,avgsal,empcnt,workdept
      FROM emp3  
/

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...