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)