如何在Oracle Live SQL中不创建视图获取查询列UDT数据类型
Oracle Live SQL中无需创建视图直接获取查询列UDT数据类型的方法咨询
我正在Oracle Live SQL在线环境中测试user-defined datatype(用户自定义数据类型,简称UDT)。日常我通常使用db<>fiddle进行测试,但该工具无法正常输出UDT值,仅会返回空结果集,无法满足测试需求。
当执行返回UDT值的查询语句时,我需要核验返回值的具体数据类型。下文给出的MRE(最小可复现示例)逻辑简单、类型清晰,但我实际业务场景中的代码复杂度更高,往往无法直接判断返回的是UDT超类型还是子类型。
当前Oracle Live SQL对UDT类型的返回结果会显示为[unsupported data type],测试代码如下:
create or replace type "MY_ST_GEOMETRY" authid current_user as object ( entity integer, constructor function my_st_geometry ( geom_str clob, srid number ) return self as result deterministic, constructor function my_st_geometry ( srid integer ) return self as result deterministic ) not final; / alter type "MY_ST_GEOMETRY" add constructor function my_st_geometry ( center_x number ) return self as result deterministic cascade; / with data as ( select my_st_geometry('point(10 10)',26917) as shape from dual) select shape from data;
执行结果如下:
SHAPE ----------------------- [unsupported data type]
现有数据类型确认方案
目前我已知的可行方法是基于目标查询创建视图,再查询user_tab_columns系统视图获取对应字段的数据类型,查询语句如下:
select data_type from user_tab_columns where table_name = 'MY_ST_GEOMETRY_VW';
执行返回结果为MY_ST_GEOMETRY类型。该方法虽然可以实现需求,但操作繁琐,我希望能找到无需创建视图即可直接获取查询列数据类型的方案。
待解决问题
是否存在无需创建视图,即可直接查看查询结果列数据类型的方法?
对应Oracle Live SQL测试脚本可在平台内通过标识nnl8wzc854tqpjavkaewuhjpk检索访问
内容的提问来源于stack exchange,提问作者User1974
相关产品推荐
相关产品推荐

