Trong Cơ sở dữ liệu Oracle, COMPOSE() hàm trả về kết quả của việc áp dụng thành phần chuẩn Unicode, như được mô tả trong định nghĩa Chuẩn Unicode D117, cho đối số chuỗi của nó.
Nó đối lập với DECOMPOSE() chức năng.
Cú pháp
Cú pháp như sau:
COMPOSE(char)
Ở đâu char là một trong CHAR , VARCHAR2 , NCHAR hoặc NVARCHAR2 kiểu dữ liệu.
Ví dụ
Dưới đây là một ví dụ để chứng minh:
SELECT
COMPOSE('a' || UNISTR('\0303'))
FROM DUAL; Kết quả:
ã
Các ký tự không phải Unicode
Nếu bộ ký tự của đối số không phải là một trong các bộ ký tự Unicode, thì đối số được trả về không được sửa đổi.
Ví dụ:
SELECT COMPOSE( 'a' )
FROM DUAL; Kết quả:
a
Đối số rỗng
Nếu đối số là null , kết quả là null :
SET NULL 'null';
SELECT COMPOSE(null)
FROM DUAL; Kết quả:
null
Theo mặc định, SQLcl và SQL * Plus trả về một khoảng trống bất cứ khi nào giá trị null xảy ra do một SELECT trong SQL tuyên bố.
Tuy nhiên, bạn có thể sử dụng SET NULL để chỉ định một chuỗi khác được trả về. Ở đây tôi đã chỉ định rằng chuỗi null nên được trả lại.
Số lượng đối số không hợp lệ
Gọi COMPOSE() mà không có bất kỳ đối số nào dẫn đến lỗi:
SELECT COMPOSE()
FROM DUAL; Kết quả:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
Và việc chuyển quá nhiều đối số cũng dẫn đến lỗi:
SELECT COMPOSE('a', 'b')
FROM DUAL; Kết quả:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"