Điều này không thực sự trả lời câu hỏi, nhưng nó có vẻ là một lỗi phân tích cú pháp (hoặc 'tính năng') hơn là một yêu cầu về ngôn ngữ.
Theo Bộ phận hỗ trợ Oracle của tôi, điều này dường như đã được nâng lên thành lỗi 14196463 nhưng bị đóng lại mà không có giải pháp nào. Nó cũng được đề cập trong chuỗi cộng đồng 3561546. Mặc dù vậy, bạn cần có tài khoản MOS hoặc ít nhất là tài khoản Oracle.
Nó cũng đã được thảo luận trong một chuỗi OTN yêu cầu đăng nhập Oracle cơ bản chứ không phải tài khoản MOS, theo như tôi có thể nói. Điều đó cũng không có nhiều thông tin nhưng lặp lại các phát hiện của bạn và cũng cho thấy hành vi đã tồn tại ít nhất là 9.2.0.8 và có lẽ sớm hơn nhiều.
Tài liệu hơi mơ hồ nhưng không chỉ ra rằng đây có thể là sự cố:
Đối với các truy vấn ghép có chứa toán tử tập hợp
UNION
,INTERSECT
,MINUS
hoặcUNION ALL
,ORDER BY
mệnh đề phải chỉ định vị trí hoặc bí danh hơn là biểu thức rõ ràng. Ngoài ra,ORDER BY
mệnh đề chỉ có thể xuất hiện trong truy vấn thành phần cuối cùng.ORDER BY
mệnh đề sắp xếp tất cả các hàng được trả về bởi toàn bộ truy vấn kết hợp.
Bạn đang đặt bí danh cho biểu thức của mình và sử dụng biểu thức đó, và nó không nói rằng bạn phải đặt bí danh cho các thành phần cụ thể (mặc dù tất nhiên nó không nói rằng bạn không phải).
Hành vi này dường như không phù hợp với việc bí danh có giá trị cho phép chiếu cuối cùng và quy tắc thông thường về bí danh chỉ hợp lệ theo thứ tự từng mệnh đề - điều này dường như đang rơi vào khoảng giữa.