背景: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