Bối cảnh: ALL_IND_EXPRESSIONS
có cộtLàm thế nào để đúc DÀI để VARCHAR2 inline
COLUMN_EXPRESSION LONG Function-based index expression defining the column
Tôi biết rằng LONG
bị phản đối. Tôi cần phải viết một cái gì đó tương tự (hoặc làm các hoạt động văn bản khác):
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-00.932: kiểu dữ liệu không phù hợp: SỐ dự kiến có DÀI
Các chú thích :
- nó phải là truy vấn độc lập
- không có đối tượng trung gian nào (tạo bảng/chế độ xem không phải là một tùy chọn).
- không
PL/SQL block
DBMS_METADATA.GET_DDL
(nó không phải là trường hợp)- WITH FUNCTION clause khu nghỉ mát như trước
Có thể đúc/chuyển đổi/sử dụng built-in chức năng LONG
-VARCHAR2
?
EDIT TL; DR:
SELECT column_expression || 'a' -- convert to working code
FROM all_ind_expressions;
Bản sao có thể có của [Chuyển đổi dài sang Varchar2] (https://stackoverflow.com/questions/31004844/converting-long-to-varchar2) –
@CyrilleMODIANO Câu trả lời được đề cập có thể hữu ích. 'Chuyển đổi từ dài sang varchar2 ngay lập tức bằng cách sử dụng một câu lệnh duy nhất là không thể, miễn là có một số hạn chế nhất định.'bất kỳ liên kết nào đến tài liệu chính thức? – lad2025