OS 환경 : Oracle Linux 8.4 (64bit)
DB 환경 : Oracle Database 23.4.0.24.05 ai Free
방법 : 오라클 23ai 뉴피처 from 절 없는 select 문
오라클 23ai 부터 dual 테이블을 조회하는 경우 from 절을 사용하지 않고 select 쿼리를 실행할 수 있음
이 기능을 사용하면 SQL 을 조금더 단순화 시키고 사용 편의성을 향상 시킴
dual을 사용하는 모든곳에 다 사용가능한 기능인듯 함
테스트
1. 일반 숫자 및 문자 조회
2. 사칙연산
3. 날짜 조회
4. 함수 사용
5. connect by 절 사용
6. 시퀀스 호출
7. 랜덤 숫자 생성
8. 사용자 세션 확인
9. 고유 식별자 생성
10. 쿼리변환 10053 트레이스 확인
테스트
1. 일반 숫자 및 문자 조회
1
2
3
4
5
6
7
8
9
10
11
|
SQL> select 1;
1
----------
1
SQL> select 'A' A;
A
-
A
|
from dual 없이 정상적으로 사용 가능함
2. 사칙연산
1
2
3
4
5
|
SQL> select 1+1;
1+1
----------
2
|
from dual 없이 정상적으로 사용 가능함
3. 날짜 조회
1
2
3
4
5
|
SQL> select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') dt;
DT
-------------------
2024/05/07 14:42:11
|
from dual 없이 정상적으로 사용 가능함
4. 함수 사용
1
2
3
4
5
|
SQL> select substr('ORACLE23AI', 1, 6);
SUBSTR
------
ORACLE
|
from dual 없이 정상적으로 사용 가능함
5. connect by 절 사용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
SQL> select level as lv connect by level <= 10;
LV
----------
1
2
3
4
5
6
7
8
9
10
10 rows selected.
|
from dual 없이 정상적으로 사용 가능함
6. 시퀀스 호출
시퀀스 생성
1
2
3
4
5
6
7
8
9
10
11
|
SQL>
create sequence emp_seq
increment by 1
start with 1
minvalue 1
maxvalue 9999
nocycle
nocache
noorder;
Sequence created.
|
시퀀스 호출
1
2
3
4
5
|
SQL> select emp_seq.nextval;
NEXTVAL
----------
1
|
from dual 없이 정상적으로 사용 가능함
7. 랜덤 숫자 생성
1
2
3
4
5
|
SQL> select dbms_random.value;
VALUE
----------
.750160313
|
from dual 없이 정상적으로 사용 가능함
8. 사용자 세션 확인
1
2
3
4
5
|
SQL> select user;
USER
--------------
C##IMSI
|
from dual 없이 정상적으로 사용 가능함
9. 고유 식별자 생성
1
2
3
4
5
|
SQL> select sys_guid();
SYS_GUID()
--------------------------------
17D895D67B9BE11CE0652789A8C06A39
|
from dual 없이 정상적으로 사용 가능함
10. 쿼리변환 10053 트레이스 확인
경로 확인
1
2
3
4
5
|
SQL> select value from v$diag_info where name = 'Default Trace File';
VALUE
--------------------------------------------------------------------------------
/opt/oracle/diag/rdbms/free/FREE/trace/FREE_ora_123635.trc
|
트레이스 및 쿼리 수행
1
2
3
4
|
SQL>
alter session set events '10053 trace name context forever';
select 10+10;
alter session set events '10053 trace name context off';
|
트레이스 확인
1
2
3
|
$ vi /opt/oracle/diag/rdbms/free/FREE/trace/FREE_ora_123635.trc
Final query after transformations: qb SEL$1 (#0):******* UNPARSED QUERY IS *******
SELECT 20 "10+10" FROM "SYS"."DUAL" "DUAL"
|
내부적으로 from dual을 추가함
결론 : from dual을 생략하는 이 기능은 기존에 from dual 을 사용하던 모든곳에서 다 사용가능한것으로 보임
참조 :
https://apex.oracle.com/pls/apex/features/r/dbfeatures/features?feature_id=1713
https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/SELECT.html#SQLRF-GUID-CFA006CA-6FF1-4972-821E-6996142A51C6
https://oracle-base.com/articles/23c/select-without-from-clause-23c
'ORACLE > Admin' 카테고리의 다른 글
오라클 23ai 신기능 정리 (0) | 2024.05.10 |
---|---|
오라클 23ai 신기능 하이브리드 read-only pdb (0) | 2024.05.10 |
오라클 23ai 신기능 tns 에러 메세지 개선 (0) | 2024.05.08 |
오라클 23ai 신기능 group by 시 alias 및 position 사용 (0) | 2024.05.07 |
오라클 23ai 신기능 if [not] exists 구문 (0) | 2024.05.05 |