programing

Oracle에서 FROM 절 없이 선택

muds 2023. 3. 22. 22:14
반응형

Oracle에서 FROM 절 없이 선택

SQL Server에서는 테이블을 참조하지 않고 SELECT를 실행할 수 있습니다.예를 들어 다음과 같습니다.

Select 1.2 +3, 'my dummy string'

Oracle에서는 FROM이 없는 SELECT를 허용하지 않기 때문에 이러한 유형의 작업에는 다음과 같은 이중 테이블을 사용합니다.

Select 1,2+3, 'my dummy string' FROM DUAL

이런 종류의 질문을 할 수 있는 더 좋은 방법이 있나요?듀얼 테이블을 사용하는 것이 좋은 관행입니까?

아니요, 인Oracle거기에는 없다SELECT없이.FROM.

사용방법dual테이블은 좋은 프랙티스입니다.

dual는 인메모리 테이블입니다.선택하지 않으면DUMMY특별한 액세스 패스를 사용합니다(FAST DUAL)는 필요 없습니다.I/O.

옛날 옛적에,dual는 2개의 레코드(이름을 붙임)를 가지고 있어 결합되는 레코드를 복제하기 위한 더미 레코드 세트로서 기능하는 것을 목적으로 하고 있습니다.

현재 레코드는 1개뿐이지만 원하는 수의 행을 생성할 수 있습니다.

SELECT  level
FROM    dual
CONNECT BY
        level <= 100

MySQL도 서포트dual(및 fromless 구문).

대부분의 경우 SELECT를 실제로 사용할 필요가 없습니다.

대신:

SELECT sysdate INTO l_date FROM dual;
SELECT CASE WHEN i = j THEN 0 ELSE 1 END INTO l_foo FROM dual;
...

사용할 수 있습니다.

l_date := sysdate;
l_foo  := CASE WHEN i = j THEN 0 ELSE 1 END;
...

듀얼 테이블을 사용하는 것이 좋습니다.

네, 보통 이중 테이블은 이런 용도로 사용됩니다.선택할 수 있는 테이블이 없는 경우 Oracle에서는 매우 표준적입니다.

예, Oracle에서는 듀얼 테이블이 일반적인 방법입니다.사실, 이것은 단지 이것만을 위해 소개되었다.

DUAL의 주요 장점은 Oracle의 옵티마이저는 DUAL이 특별하다는 것을 알고 있기 때문에 DUAL을 사용하는 쿼리는 사용자가 직접 작성한 단일 행 테이블을 사용하는 경우보다 더 빠를 수 있습니다.그것 말고는 특별한 게 없어요.

듀얼을 쓰셔야 할 것 같아요.테이블 이름이 없는 SQL을 실행해야 할 때 사용됩니다.SQL 스크립트 이외에는 어떤 실행일자를 에코아웃하기 위해 사용하는 방법이 없습니다.

실제로 SQL Server의 구현은 표준이 아닙니다.SQL-92 Standard(섹션 7.9)에서는 SELECT 문에 FROM 절이 필요합니다.DUAL은 스칼라 행을 얻기 위해 선택할 수 있는 테이블을 제공하는 Oracle의 방법입니다.

언급URL : https://stackoverflow.com/questions/1881853/select-without-a-from-clause-in-oracle

반응형