背景:ALL_IND_EXPRESSIONS
有列如何LONG转换为VARCHAR2直列
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:不一致的数据类型:预期数量有LONG
备注:
- 它必须是自包含查询
- 没有中间对象(创建表/视图不是一个选项)。
- 没有
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;
可能重复[Converting Long to Varchar2](https://stackoverflow.com/questions/31004844/converting-long-to-varchar2) –
@CyrilleMODIANO提到的答案可能会有所帮助。 '使用单个语句立即从long转换为varchar2是不可能的,只要有一定的限制即可。“官方文档的任何链接? – lad2025