博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PLSQL Convert Object to String
阅读量:7249 次
发布时间:2019-06-29

本文共 2239 字,大约阅读时间需要 7 分钟。

Problem & Goal

Usually, like in java, any object will implement its to_string() function. So in Plsql, there is the same requirement.

 We want to implement to_string() in plsql.

Thinking

When one Object' type is basic type in plsql, then the function will return its value. Otherwise, the function will return its typename.

Solution  & Example

CREATE OR REPLACE FUNCTION to_string(obj IN ANYDATA) RETURN VARCHAR2 IScode PLS_INTEGER;v_type AnyType;BEGIN    code :=obj.getType(v_type);    CASE         code WHEN DBMS_TYPES.TYPECODE_VARCHAR2 THEN                RETURN  TO_CHAR(obj.AccessVarchar2());            WHEN DBMS_TYPES.TYPECODE_BDOUBLE THEN                RETURN TO_CHAR(obj.AccessBDouble());            WHEN DBMS_TYPES.TYPECODE_BFLOAT THEN                RETURN TO_CHAR(obj.AccessBFloat());            WHEN DBMS_TYPES.TYPECODE_NUMBER THEN                RETURN TO_CHAR(obj.AccessNumber());        ELSE RETURN obj.getTypeName(); END CASE;END;/show errors;CREATE OR REPLACE TYPE TEST FORCE AS OBJECT(id Number, name VARCHAR2(20), CONSTRUCTOR FUNCTION TEST RETURN SELF AS RESULT);/show errors;CREATE OR REPLACE TYPE BODY TEST AS CONSTRUCTOR FUNCTION TEST RETURN SELF AS RESULT IS  BEGIN RETURN;END;END; /show errors;SET SERVEROUTPUT ON;DECLARE a Number;b VARCHAR2(20);c TEST;BEGIN    a :=1;    b:='julia zhang';    c :=TEST();    dbms_output.put_line('a:to_string()::::'||to_string(AnyData.convertNumber(a)));    dbms_output.put_line('b:to_string()::::'||to_string(AnyData.convertVarchar2(b)));    dbms_output.put_line('c:to_string()::::'||to_string(AnyData.convertObject(c)));END;/

Extend

 

CREATE OR REPLACE FUNCTION AnydataArray1ToString (id IN AnydataArray , for_flatten BOOLEAN ) RETURNVARCHAR2 ISi INTEGER ; result_str VARCHAR2 (32767); BEGIN    result_str  := '';    FOR i IN 1..id.count    LOOP        IF  for_flatten  THEN            result_str  := result_str  || ', ' || objectToString (id (i ));        ELSE result_str  := result_str  || objectToString (id (i )); END IF;    END LOOP;    IF  for_flatten  THEN RETURN substr (result_str , 3); ELSE        RETURN result_str ; END IF;END ;/

 

 

 

Refference

http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/t_anydat.htm#BEHEICHI

转载于:https://www.cnblogs.com/juliazhang/p/5091314.html

你可能感兴趣的文章
mui初级入门教程(五)— 聊聊即时通讯(IM),基于环信 web im SDK
查看>>
[vs2008]Visual Studio 2008 SP1添加或删除功能提示查找SQLSysClrTypes.msi文件
查看>>
JS 设计模式二(封装)
查看>>
JavaScript “跑马灯”抽奖活动代码解析与优化(一)
查看>>
为什么我们选择 segmentfault 写作?
查看>>
多模型融合推荐算法在达观数据的运用
查看>>
JDK 11 马上就要来了!JDK 12 还会远吗?
查看>>
Kali Linux 2019.1 发布,Metasploit 更新到 5.0 版本
查看>>
【mysql的设计与优化专题(1)】ER图,数据建模与数据字典
查看>>
Jibo’s Name: How did we pick it?
查看>>
device's media capture mechanism,利用input:file调用设备的照相机/相册、摄像机、录音机...
查看>>
BroadLink:三款新品力求无障碍人机交互,三大平台分三期对外开放 ...
查看>>
掌门1对1获3.5亿美元E-1轮融资,华人文化产业基金、中金甲子基金等投资 ...
查看>>
Unity中的通用对象池
查看>>
ORA-00600: internal error code, arguments: [16703], [1403], [28], [...
查看>>
忆芯科技发布新一代国产主控芯片STAR1000P!4月完成量产版本 ...
查看>>
如何用条码标签打印软件实现商品价签制定会员价 ...
查看>>
如何轻松实现个性化推荐系统
查看>>
Mysql高级查询 内连接和外连接详解
查看>>
基于AWS的电子商务网站架构——Web前端
查看>>