gpt4 book ai didi

sql - 如何将LONG强制转换为VARCHAR2内联

转载 作者:行者123 更新时间:2023-12-04 06:31:31 25 4
gpt4 key购买 nike

背景: ALL_IND_EXPRESSIONS 具有列

COLUMN_EXPRESSION   LONG   Function-based index expression defining the column


我知道 LONG 已过时。我需要写一些类似的东西(或进行其他文本操作):
SELECT 
REPLACE(REPLACE(REPLACE(
q'{ALTER INDEX "<index_owner>"."<index_name>" ON ... (<column_expression>)}'
,'<index_owner>', index_owner )
,'<index_name>', index_name)
,'<column_expression>', column_expression) AS result
FROM all_ind_expressions;

ORA-00932: inconsistent datatypes: expected NUMBER got LONG



DBFiddle Demo

评论:
  • 它必须是自包含查询
  • 没有中间对象(创建表/ View 不是一种选择)。
  • 没有PL/SQL block
  • DBMS_METADATA.GET_DDL(不是这种情况)
  • WITH FUNCTION clause作为最后的手段

  • 是否可以将内置函数从 LONG转换/转换为 VARCHAR2

    编辑TL; DR:
    SELECT column_expression || 'a'  -- convert to working code
    FROM all_ind_expressions;

    最佳答案

    您可以使用XML,除非表达式包含可以阻止XML解析的内容。

    select *
    from xmltable(
    '/ROWSET/ROW'
    passing (select dbms_xmlgen.getxmltype('select * from all_ind_expressions
    where index_name = ''XDB$COMPLEX_TYPE_AK''')
    from dual)
    columns index_owner varchar2(30) path 'INDEX_OWNER',
    index_name varchar2(30) path 'INDEX_NAME',
    table_owner varchar2(30) path 'TABLE_OWNER',
    table_name varchar2(30) path 'TABLE_NAME',
    column_expression varchar2(4000) path 'COLUMN_EXPRESSION')

    INDEX_OWNER INDEX_NAME TABLE_OWNER TABLE_NAME COLUMN_EXPRESSION
    --------------- -------------------- --------------- -------------------- -----------------------------------
    XDB XDB$COMPLEX_TYPE_AK XDB XDB$COMPLEX_TYPE SYS_OP_R2O("XMLDATA"."ALL_KID")
    1 row selected.

    关于sql - 如何将LONG强制转换为VARCHAR2内联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46991132/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com