用于自定义类型的内爆函数的PL/SQL

Xop*_*ter 6 oracle plsql sql-types concatenation object

有没有办法在PL/SQL中创建一个implode例程,它将任何自定义数据类型作为参数并连接其成员,由一些指定的字符串分隔?

例如,假设我有以下类型:

CREATE TYPE myPerson AS OBJECT(
  forename VARCHAR2(50),
  surname  VARCHAR2(50),
  age      NUMBER
);
Run Code Online (Sandbox Code Playgroud)

然后,假设一个函数返回一个类型的对象myPerson,但我想将列连接在一起:

SELECT implode(getPerson(1234),'$$') from dual;
Run Code Online (Sandbox Code Playgroud)

返回(假设这个设计示例中的数据已设置):

John$$Doe$$55
Run Code Online (Sandbox Code Playgroud)

可以将分隔符指定为可选参数,但第一个参数的类型可以是任何(不一定myPerson).

小智 7

您的自定义数据类型可以支持方法,方法可以包含参数.

CREATE TYPE myPerson AS OBJECT(   
  forename VARCHAR2(50),   
  surname  VARCHAR2(50),   
  age      NUMBER,

  MEMBER FUNCTION
  get_record(pGlue IN varchar2)   RETURN VARCHAR2 );

CREATE TYPE BODY myPerson 
AS 
   MEMBER FUNCTION get_record(pGlue varchar2) RETURN VARCHAR2

 IS
BEGIN
 RETURN forename || pGlue  || surname  || pGlue || age ;
END get_record;

END;
Run Code Online (Sandbox Code Playgroud)