[SQL] PostgreSQL의 - 테이블 이름 같은 동적 값 [중복]
SQLPostgreSQL의 - 테이블 이름 같은 동적 값 [중복]
나는 아래 다른 쿼리에 대한 테이블 이름으로 쿼리에서 반환 된 문자열을 사용하고 싶습니다.
SELECT 'backup_' || TO_CHAR(CURRENT_DATE,'yyyy-mm-dd')
당신이 볼 수 있듯이 그것은 문자열을 반환합니다. 나는 예를 들어, 다른 쿼리에 대한 입력으로 사용하고자하는
CREATE TABLE (SELECT 'backup_' || TO_CHAR(CURRENT_DATE,'yyyy-mm-dd'))
AS * SELECT FROM backup
그것은 할 수 있습니까? 어떤 단서 방법?
해결법
-
==============================
1.당신은 DO 블록 또는 PL / pgSQL의 기능 (CREATE OR REPLACE FUNCTION ... 언어의 plpgsql) 경유하여 PL / pgSQL의 EXECUTE 문을 사용해야합니다. 동적 SQL은 절차 PL / pgSQL의 변형에서, PostgreSQL을에 의해 사용되는 일반 SQL 언어에서 지원되지 않습니다.
당신은 DO 블록 또는 PL / pgSQL의 기능 (CREATE OR REPLACE FUNCTION ... 언어의 plpgsql) 경유하여 PL / pgSQL의 EXECUTE 문을 사용해야합니다. 동적 SQL은 절차 PL / pgSQL의 변형에서, PostgreSQL을에 의해 사용되는 일반 SQL 언어에서 지원되지 않습니다.
DO $$ BEGIN EXECUTE format('CREATE TABLE %I AS SELECT * FROM backup', 'backup_' || to_char(CURRENT_DATE,'yyyy-mm-dd')); END; $$ LANGUAGE plpgsql;
포맷 (...)의 함수 %의 I 및 % L-포맷 지시자 적절한 식별자 및 문자 각각 인용 할.
리터럴을 위해 나는 %의 L로 (...) 사용보다는 형식 ... EXECUTE 사용하는 것이 좋습니다,하지만 테이블 / 열 이름과 같은 식별자의 형식 %의 I 패턴에서 quote_ident 통화 상세에 좋은의 간결한 대안입니다.
from https://stackoverflow.com/questions/13289304/postgresql-dynamic-value-as-table-name by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 저장 프로 시저에서 SQL Server 에이전트 작업을 실행하고 작업 결과를 반환 (0) | 2020.06.12 |
---|---|
[SQL] 데이터베이스에 널 (null)에 의해 사용되는 공간 (0) | 2020.06.12 |
[SQL] 오라클 SQL은 두 숫자 사이의 모든 정수를 가져옵니다 (0) | 2020.06.12 |
[SQL] SQL Server는 타임 스탬프 열을 업데이트 (0) | 2020.06.12 |
[SQL] SELECT 문에서 두 열을 결합 SQL은 (0) | 2020.06.12 |