我需要将以下函数从 DB2 转换为 Oracle,有人可以帮忙吗?我不知道 DB2

I need to convert below function in from DB2 to Oracle, can anybody help? I have no idea about 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  ;

所有参数都未使用,如果未使用,需要删除哪些位weird.You。

在我看来很简单,它只是从函数返回自定义 table/type。这是我解决你问题的微弱努力

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

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_DEPTNUM,l_AVGSAL,l_EMPCNT,l_WORKDEPT);

  Return l_customType;

  End;

DB2 函数声明为 DETERMINISTIC。这意味着它将 return 相同的一组行进行 n 次调用。浏览一下这段 DB2 代码,您将不需要 Oracle 中的函数,而是为 select 语句创建一个视图,如

  CREATE VIEW explainmsgs AS
      SELECT  
            id,
            deptnum,
            avgsal,
            empcnt,
            workdept
      FROM emp3  
/