SnowConvert AI - Redshift - CREATE PROCEDURE¶
설명¶
새 저장 프로시저를 만들거나 현재 데이터베이스에 대한 기존 프로시저를 바꿉니다. (Redshift SQL Language Reference 생성 절차).
프로시저 절에 대한 자세한 내용은 다음 정의를 참조하십시오.
문법 구문¶
The following is the SQL syntax to create a Procedure in Amazon Redshift. See the Redshift CREATE PROCEDURE specification for this syntax.
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
ALIAS DECLARATION¶
설명¶
저장 프로시저의 서명에 인자 이름이 생략된 경우 해당 인자에 대한 별칭을 선언할 수 있습니다.
Snowflake에서는 이에 대한 지원이 없습니다.
기능적 동등성을 확보하기 위해 별칭이 제거되고 모든 용도의 이름이 변경됩니다.
이름이 없는 매개 변수에 대해 별칭을 선언하면 해당 매개 변수와 사용법에 대해 생성된 이름이 생성됩니다. 별칭이 이름이 있는 매개 변수의 이름인 경우 별칭은 실제 매개 변수 이름으로 대체됩니다.
문법 구문¶
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs.¶
관련 EWIs 가 없습니다.
ARGUMENTS MODE¶
설명¶
Amazon Redshift 저장 프로시저는 프로시저 호출 중에 전달할 수 있는 매개 변수를 지원합니다. 이러한 매개 변수를 사용하면 입력 값을 제공하거나, 출력 값을 검색하거나, 입력 및 출력 작업에 사용할 수 있습니다. 다음은 매개 변수의 유형, 모드 및 사용 예시에 대한 자세한 설명입니다. Snowflake는 입력 값만 지원합니다.
IN (입력 매개 변수)¶
목적: 프로시저에 값을 전달하는 데 사용됩니다.
기본 모드: 모드를 지정하지 않으면 매개 변수는 IN 으로 간주됩니다.
동작: 프로시저에 전달된 값은 프로시저 내부에서 수정할 수 없습니다.
OUT (출력 매개 변수)¶
목적: 프로시저에서 반환 값을 반환하는 데 사용됩니다.
동작: 프로시저 내에서 매개 변수를 수정할 수 있으며 호출자에게 반환됩니다. 초기값은 보낼 수 없습니다.
INOUT (입력/출력 매개 변수)¶
목적: 프로시저에 값을 전달하고 업데이트된 값을 반환하도록 수정하는 데 사용됩니다.
동작: 동작: IN 및 OUT 의 동작을 결합합니다. 출력에 관계없이 초기값을 보내야 합니다.
문법 구문¶
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs¶
SCC-EWI-0028: Snowflake에서 지원하지 않는 유형입니다.
SSC-EWI-RS0010: 출력 매개 변수가 있는 최상위 프로시저 호출은 지원되지 않습니다.
PROCEDURE BODY¶
힌트
SnowConvert does not support translation for PostgreSQL string constant definition in procedures. Use arrange option
설명¶
Redshift와 마찬가지로 Snowflake는 $$ procedure_logic $$을 본문으로 사용하여 CREATE PROCEDURE를 지원합니다. Redshift 구문에서는 $word$처럼 $$ 안에 단어를 넣어 $word$ procedure_logic $word$와 같이 구분자 본문으로 사용할 수 있다는 차이점이 있습니다. SnowConvert AI는 $$를 남겨두고 단어를 제거하여 변환합니다.
문법 구문¶
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs.¶
관련 EWIs 가 없습니다.
BLOCK STATEMENT¶
설명¶
PL/pgSQL 은 블록 구조의 언어입니다. 프로시저의 전체 본문은 변수 선언과 PL/pgSQL 문을 포함하는 블록에 정의됩니다. 문은 중첩된 블록 또는 하위 블록일 수도 있습니다.
문법 구문¶
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs.¶
관련 EWIs 가 없습니다.
DECLARE¶
설명¶
루프 변수를 제외한 모든 프로시저 변수를 선언하는 섹션입니다.\ Redshift는 블록 문당 여러 개의 DECLARE 섹션을 지원하지만, Snowflake는 이 동작을 지원하지 않으므로 블록당 1개의 선언 문으로 병합해야 합니다.
문법 구문¶
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs.¶
관련 EWIs 가 없습니다.
EXCEPTION¶
설명¶
예외가 발생하여 예외 처리 블록을 추가하면 RAISE 문과 대부분의 다른 PL/pgSQL 문을 작성할 수 있습니다. 예를 들어, 사용자 지정 메시지로 예외를 발생시키거나 로깅 테이블에 레코드를 삽입할 수 있습니다.
문법 구문¶
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs.¶
관련 EWIs 가 없습니다.
LABEL¶
설명¶
Redshift에서 레이블은 블록의 자격을 부여하거나 EXIT 또는 END 문을 사용하는 데 사용됩니다. Snowflake는 레이블을 지원하지 않습니다.
경고
Snowflake에서는 레이블이 지원되지 않으므로 EWI 이 인쇄됩니다.
문법 구문¶
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs¶
SSC-EWI-0094: 레이블 선언은 지원되지 않습니다.
NONATOMIC¶
설명¶
NONATOMIC 은 저장 프로시저의 각 문 뒤에 커밋됩니다. Snowflake는 AUTOCOMMIT 매개 변수를 지원합니다. AUTOCOMMIT의 기본 설정은 TRUE(활성화됨)입니다.
AUTOCOMMIT 이 활성화되어 있는 동안 명시적 트랜잭션 외부의 각 문은 암시적 단일 문 트랜잭션 내부의 문으로 취급됩니다. 다시 말해, 해당 문이 성공하면 자동으로 커밋되고 실패하면 자동으로 롤백됩니다. 즉, “기본적으로” Snowflake는 NONATOMIC 으로 작동합니다.
문법 구문¶
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs.¶
관련 EWIs 가 없습니다.
POSITIONAL ARGUMENTS¶
설명¶
Redshift는 $를 사용하여 위치별로 매개 변수를 참조하여 이름 없는 매개 변수를 지원합니다. Snowflake는 이 동작을 지원하지 않습니다. 기능적 동등성을 보장하기 위해, SnowConvert AI는 정의에 이름이 있는 경우 매개 변수의 이름으로 해당 참조를 변환할 수 있습니다. 그렇지 않은 경우, SnowConvert AI는 매개 변수의 이름을 생성하고, 사용된 이름은 새 이름으로 바뀝니다.
문법 구문¶
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs.¶
관련 EWIs 가 없습니다.
RAISE¶
설명¶
RAISE level문을 사용하여 메시지를 보고하고 오류를 발생시킵니다.
참고
RAISE는 Snowflake에서 완벽하게 지원됩니다.
문법 구문¶
Amazon Redshift에서 RAISE 문은 콘솔에서 메시지를 생성하거나 사용자 지정 예외를 throw하는 데 사용됩니다. Redshift를 사용하면 다양한 _레벨_을 지정하여 메시지의 심각도를 나타낼 수 있습니다. Snowflake에서는 지정된 레벨에 따라 콘솔을 호출하는 사용자 정의 함수(UDF)를 사용하여 이 기능을 에뮬레이션할 수 있습니다.
예외:\ 레벨이 “EXCEPTION”인 경우, 일반 메시지 _”To view the EXCEPTION MESSAGE, you need to check the log.”_와 함께 사용자 정의 예외가 발생합니다. 예외 코드는
-20002이며, 사용자에게 사용자 정의 메시지가 로그에 있다는 것을 알려줍니다. 이는 Snowflake에서 사용자 지정 예외를 보낼 때 제한이 있기 때문입니다.경고:\ 수준이 “WARNING”인 경우
SYSTEM$LOG_WARN는 실행 플로우를 중단하지 않고 잠재적인 문제를 강조하는 데 도움이 되는 경고 메시지를 Snowflake의 로그에 인쇄하는 데 사용됩니다.정보:\ 다른 수준(예: “INFO”)의 경우
SYSTEM$LOG_INFO를 사용하여 메시지를 콘솔 로그에 인쇄하여 심각한 중단 없이 시스템 상태에 대한 자세한 피드백을 제공합니다.
이 접근법을 사용하면 Redshift의 심각도 수준 기능을 에뮬레이션하여 Snowflake의 구문과 기능에 맞게 조정하는 동시에 실행 중에 생성되는 메시지와 예외에 대한 유연성과 제어를 유지할 수 있습니다.
제한 사항
Snowflake에서 로그를 보려면
ACCOUNTADMIN또는SECURITYADMIN역할과 같은 특정 권한이 있어야 합니다.Snowflake의 로그는 즉시 사용 가능하지 않으며 정보가 표시되기까지 약간의 지연이 있을 수 있습니다.
예외적으로 개인 설정 오류 메시지는 Redshift에서와 같이 표시되지 않습니다. 사용자 지정 메시지를 보려면 로그에 직접 액세스해야 합니다.
자세한 내용은 다음 페이지를 참조하세요.
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
UDFs ¶
RAISE_MESSAGE_UDF¶
STRING_FORMAT_UDF¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs.¶
관련 EWIs 가 없습니다.
RETURN¶
설명¶
RETURN 문은 저장 프로시저에서 호출자에게 다시 반환합니다. (Redshift SQL Language Reference 반환).
반환 문을 Amazon Redshift에서 Snowflake로 변환하는 것은 간단하며, Snowflake의 반환 문에 NULL 을 추가하기만 하면 됩니다.
문법 구문¶
샘플 소스 패턴¶
단순 케이스¶
입력 코드:¶
Redshift¶
출력 코드:¶
Redshift¶
프로시저에 매개 변수가 없는 경우¶
SnowConvert AI는 매개 변수가 출력 매개 변수로 설정된 베리언트를 반환합니다. 따라서 각 반환에 대해 SnowConvert AI는 베리언트를 반환 값으로 추가합니다.
입력 코드:¶
Redshift¶
출력 코드:¶
Redshift¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs.¶
관련 EWIs 가 없습니다.
SECURITY (DEFINER | INVOKER)¶
설명¶
Amazon Redshift 저장 프로시저의 SECURITY 절은 프로시저가 실행되는 액세스 제어 및 권한 컨텍스트를 정의합니다. 프로시저가 소유자(작성기)의 권한을 사용할지, 아니면 호출자(프로시저를 호출하는 사용자)의 권한을 사용할지 결정합니다.
문법 구문¶
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs.¶
관련 EWIs 가 없습니다.
VARIABLE DECLARATION¶
설명¶
블록의 DECLARE 섹션에서 루프 변수를 제외한 블록의 모든 변수를 선언합니다.
참고
변수 선언은 Snowflake 에서 완벽하게 지원됩니다.
문법 구문¶
Redshift에서 CONSTANT 키워드는 실행 중 변수 재할당을 방지합니다. Snowflake는 이 키워드를 지원하지 않으므로 변환 중에 제거됩니다. 로직이 상수 변수를 재할당하려고 시도해서는 안 되므로 기능에는 영향을 미치지 않습니다.
Redshift의 NOT NULL 제약 조건은 변수에 null 값을 할당할 수 없으며 기본값이 null이 아닌 값을 요구합니다. Snowflake는 이 제약 조건을 지원하지 않으므로 변환 중에 제거됩니다. 그러나 기능 유지를 위해 기본값은 유지됩니다.
레퍼런스를 사용한 변수 선언은 결과 집합 유형으로 변환됩니다. 자세한 내용은 정보를 참조하십시오.
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs¶
SSC-FDM-PG0012: NOT NULL 제약 조건이 제거되었습니다. 이 변수에 NULL 을 할당하면 더 이상 실패가 발생하지 않습니다.
TRANSACTIONS¶
COMMIT¶
설명¶
현재 트랜잭션을 데이터베이스에 커밋합니다. 이 명령은 트랜잭션에서 데이터베이스 업데이트를 영구적으로 생성합니다. (Redshift SQL Language Reference COMMIT)
문법 구문
샘플 소스 패턴¶
설정 데이터¶
Redshift¶
쿼리¶
Snowflake¶
쿼리¶
TRANSACTION 키워드가 포함된 COMMIT¶
TRANSACTION 키워드는 Snowflake에서 지원되지 않습니다. 그러나 기능에는 영향을 미치지 않으므로 제거될 것입니다.
Redshift¶
쿼리¶
Snowflake¶
쿼리¶
기본 트랜잭션 동작 프로시저의 COMMIT (NONATOMIC 절 미포함)¶
To avoid out of scope transaction exceptions in Snowflake, the usages of COMMIT will be matched with BEGIN TRANSACTION.
프로시저에 여러 개의 COMMIT 문이 있는 경우, Redshift 트랜잭션 동작을 에뮬레이션하기 위해 매 COMMIT 뒤에 여러 개의 BEGIN TRANSACTION 문이 생성됩니다.
Redshift¶
쿼리¶
결과¶
Snowflake¶
쿼리¶
결과¶
COMMIT 동작이 있는 프로시저의 NONATOMIC¶
Redshift의 NONATOMIC 동작은 true으로 설정된 세션 매개 변수 AUTOCOMMIT 를 사용하여 Snowflake에서 에뮬레이션됩니다.
AUTOCOMMIT 세션 매개 변수는 SnowConvert AI에서 true로 간주되므로 NONATOMIC 프로시저 내부의 COMMIT 문은 있는 그대로 유지됩니다.
Redshift¶
쿼리¶
결과¶
Snowflake¶
쿼리¶
결과¶
Known Issues¶
1. 중첩 프로시저 호출 내의 COMMIT
Redshift에서 중첩 프로시저 호출에 COMMIT 문이 지정되면 이 명령은 현재 및 상위 항목 범위에 있는 이전 문에서 보류 중인 모든 작업을 커밋합니다. 상위 범위 작업을 커밋하는 것은 Snowflake에서 지원되지 않으며, 이 경우가 감지되면 FDM 이 생성됩니다.
Redshift¶
쿼리¶
Snowflake¶
쿼리¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs¶
SSC-FDM-RS0006: 호출된 프로시저에 COMMIT/ROLLBACK 의 사용법이 포함되어 있으며, 하위 범위에서 현재 트랜잭션을 수정하는 것은 Snowflake에서 지원되지 않습니다.
ROLLBACK¶
설명¶
현재 트랜잭션을 중지하고 해당 트랜잭션에서 수행한 모든 업데이트를 삭제합니다. (Redshift SQL Language Reference ROLLBACK)
문법 구문
샘플 소스 패턴¶
설정 데이터¶
Redshift¶
쿼리¶
Snowflake¶
쿼리¶
TRANSACTION 키워드가 포함된 ROLLBACK¶
TRANSACTION 키워드는 Snowflake에서 지원되지 않습니다. 그러나 기능에는 영향을 미치지 않으므로 제거될 것입니다.
Redshift¶
쿼리¶
Snowflake¶
쿼리¶
기본 트랜잭션 동작 프로시저의 ROLLBACK (NONATOMIC 절 미포함)¶
To avoid out of scope transaction exceptions in Snowflake, the usages of ROLLBACK will be matched with BEGIN TRANSACTION.
프로시저에 트랜잭션 제어 문이 여러 개 있는 경우, 각 문 뒤에 여러 개의 BEGIN TRANSACTION 문이 생성되어 Redshift 트랜잭션 동작을 에뮬레이션합니다.
Redshift¶
쿼리¶
결과¶
Snowflake¶
쿼리¶
결과¶
ROLLBACK 동작이 있는 프로시저의 NONATOMIC¶
Redshift의 NONATOMIC 동작은 true으로 설정된 세션 매개 변수 AUTOCOMMIT 를 사용하여 Snowflake에서 에뮬레이션됩니다.
AUTOCOMMIT 세션 매개 변수는 SnowConvert AI에서 true로 간주되므로 NONATOMIC 프로시저 내부의 ROLLBACK 문은 있는 그대로 유지됩니다.
Redshift¶
쿼리¶
결과¶
Snowflake¶
쿼리¶
결과¶
Known Issues¶
1. 중첩 프로시저 호출 내의 ROLLBACK
Redshift에서 중첩 프로시저 호출에 ROLLBACK 문이 지정되면 이 명령은 현재 및 상위 항목 범위에 있는 이전 문에서 보류 중인 모든 작업을 커밋합니다. 상위 범위 작업을 커밋하는 것은 Snowflake에서 지원되지 않으며, 이 경우가 감지되면 FDM 이 생성됩니다.
Redshift¶
쿼리¶
Snowflake¶
쿼리¶
2. DDL 문의 ROLLBACK
In Snowflake, DDL statements perform an implicit commit whenever they are executed inside a procedure, making effective all the work before executing the DDL as well as the DDL itself. This causes the ROLLBACK statement to not be able to discard any changes before that point, this issue will be informed using an FDM.
Redshift¶
쿼리¶
Snowflake¶
쿼리¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs¶
SSC-FDM-RS0006: 호출된 프로시저에 COMMIT/ROLLBACK 의 사용법이 포함되어 있으며, 하위 범위에서 현재 트랜잭션을 수정하는 것은 Snowflake에서 지원되지 않습니다.
SSC-FDM-RS0007: DDL statements perform an automatic COMMIT in Snowflake. ROLLBACK will not undo DDL-committed changes.
TRUNCATE¶
설명¶
테이블 스캔을 수행하지 않고 테이블에서 모든 행을 삭제합니다. (Redshift SQL Language Reference TRUNCATE)
문법 구문
샘플 소스 패턴¶
설정 데이터¶
Redshift¶
쿼리¶
Snowflake¶
쿼리¶
기본 트랜잭션 동작 프로시저의 TRUNCATE (NONATOMIC 절 미포함)¶
TRUNCATE 문은 실행되는 트랜잭션을 자동으로 커밋하므로, 이 문을 사용하면 이 동작을 에뮬레이션하기 위해 Snowflake가 COMMIT 문을 생성합니다.
COMMIT 문이 생성되었으므로 TRUNCATE 에도 동일한 BEGIN TRANSACTION 문 생성이 적용됩니다. 자세한 내용은 COMMIT 변환 사양을 참조하십시오.
Redshift¶
쿼리¶
결과¶
Snowflake¶
쿼리¶
결과¶
TRUNCATE 동작이 있는 프로시저의 NONATOMIC¶
Redshift의 NONATOMIC 동작은 true으로 설정된 세션 매개 변수 AUTOCOMMIT 를 사용하여 Snowflake에서 에뮬레이션됩니다.
Since the AUTOCOMMIT session parameter is assumed to be true by SnowConvert AI, the TRUNCATE statement inside NONATOMIC procedures is left as is, there is no need to generate a COMMIT statement because every statement is automatically committed when executed.
Redshift¶
쿼리¶
결과¶
Snowflake¶
쿼리¶
결과¶
Known Issues¶
1. 중첩 프로시저 호출 내의 TRUNCATE
Redshift에서 중첩 프로시저 호출에 COMMIT 문이 지정되면 이 명령은 현재 및 상위 항목 범위에 있는 이전 문에서 보류 중인 모든 작업을 커밋합니다. 상위 범위 작업을 커밋하는 것은 Snowflake에서 지원되지 않으며, 이 경우가 감지되면 FDM 이 생성됩니다.
Redshift¶
쿼리¶
Snowflake¶
쿼리¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs¶
SSC-FDM-RS0006: 호출된 프로시저에 COMMIT/ROLLBACK 의 사용법이 포함되어 있으며, 하위 범위에서 현재 트랜잭션을 수정하는 것은 Snowflake에서 지원되지 않습니다.
CONDITIONS¶
CASE¶
설명¶
Redshift의
CASE문을 사용하면 조건에 따라 값을 반환할 수 있으므로 쿼리에서 조건부 논리를 사용할 수 있습니다. 단순과 검색의 두 가지 형태가 있습니다. (Redshift SQL Language Reference 조건부: 대/소문자).
단순 케이스¶
간단한 CASE 문은 피연산자의 동등성에 따라 조건부 실행을 제공합니다.
참고
Simple Case는 Snowflake 에서 완벽하게 지원됩니다.
문법 구문¶
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Redshift¶
검색된 케이스¶
참고
Searched Case는 Snowflake 에서 완벽하게 지원됩니다.
문법 구문¶
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Redshift¶
ELSE을 제외한 CASE¶
Redshift에서 CASE 식이 실행되고 유효성 검사된 조건이 충족되지 않고 ELSE 가 정의되지 않은 경우 예외 ‘CASENOTFOUND’가 트리거됩니다. Snowflake에서는 코드가 실행되지만 결과가 반환되지 않습니다. 이 시나리오에서 Snowflake에서 동일한 기능을 유지하기 위해 CASE 조건이 충족되지 않으면 같은 이름의 예외가 선언되고 실행됩니다.
참고
Case Without Else는 Snowflake 에서 완벽하게 지원됩니다.
입력 코드:¶
Redshift¶
출력 코드:¶
Redshift¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs.¶
관련 EWIs 가 없습니다.
IF¶
설명¶
이 문을 사용하면 특정 조건에 따라 결정을 내릴 수 있습니다. (Redshift SQL Language Reference 조건문: IF).
Redshift는 조건에 괄호가 필요하지 않고 ELSIF가 키워드이므로 SnowConvert AI는 조건에 괄호를 추가하고 키워드 ELSIF를 ELSEIF로 변경합니다.
문법 구문¶
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Redshift¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs.¶
관련 EWIs 가 없습니다.
LOOPS¶
설명¶
이러한 문은 지정된 조건이 될 때까지 코드 블록을 반복하는 데 사용됩니다. (Redshift SQL Language Reference 루프).
CONTINUE¶
설명¶
CONTINUE 조건이 true이면 루프가 실행을 계속할 수 있고, false이면 루프가 중지됩니다. (Redshift SQL Language Reference 조건문: CONTINUE).
경고
CONTINUE 는 Snowflake 에서 부분적으로 지원됩니다.
문법 구문¶
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
결과¶
콘솔 출력 |
|---|
1 |
2 |
3 |
4 |
6 |
7 |
출력 코드:¶
Snowflake¶
결과¶
콘솔 출력 |
|---|
1 |
2 |
3 |
4 |
6 |
7 |
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs.¶
관련 EWIs 가 없습니다.
EXIT¶
설명¶
WHEN 문에 정의된 조건이 true이면 루프 실행을 중지합니다. (Redshift SQL Language Reference 조건문: EXIT).
경고
EXIT 는 Snowflake 에서 부분적으로 지원됩니다.
문법 구문¶
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Redshift¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs.¶
관련 EWIs 가 없습니다.
FOR¶
문법 구문¶
정수 베리언트
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Redshift¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs.¶
SSC-EWI-PG0006: Label을 사용하여 변수를 참조하는 기능은 Snowflake에서 지원되지 않습니다.
LOOP¶
설명¶
단순 루프는 EXIT 또는 RETURN 문으로 종료될 때까지 무한히 반복되는 무조건 루프를 정의합니다. (Redshift SQL Language Reference 조건문: Simple Loop).
경고
Simple Loop는 Snowflake 에서 부분적으로 지원됩니다.
문법 구문¶
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Redshift¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs.¶
관련 EWIs 가 없습니다.
WHILE¶
문법 구문¶
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Redshift¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs.¶
관련 EWIs 가 없습니다.
CURSORS¶
CLOSE CURSOR¶
설명¶
열린 커서와 연결된 모든 무료 리소스를 닫습니다. (Redshift SQL Language Reference 커서 닫기).
참고
이 구문은 Snowflake에서 완벽하게 지원됩니다.
문법 구문¶
샘플 소스 패턴¶
입력 코드:¶
Redshift¶
출력 코드:¶
Redshift¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs.¶
관련 EWIs 가 없습니다.
FETCH CURSOR¶
설명¶
커서를 사용하여 행을 검색합니다. (Redshift SQL Language reference 가져오기)
변환 정보
샘플 소스 패턴¶
설정 데이터¶
Redshift¶
쿼리¶
Snowflake¶
쿼리¶
Fetch into¶
Redshift에서 문의 FETCH 는 Snowflake에서와 완전히 동일합니다
Redshift¶
쿼리¶
결과¶
Snowflake¶
쿼리¶
결과¶
Known Issues¶
1. 대상 변수가 없는 가져오기는 지원되지 않습니다
Snowflake는 FETCH 문에 INTO 절을 가져온 행 값을 저장할 변수와 함께 지정해야 합니다. 코드에 INTO 절이 없는 FETCH 문이 발견되면 EWI 가 생성됩니다.
입력 코드:
출력 코드:
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs¶
SSC-EWI-PG0015: 대상 변수가 없는 커서 가져오기는 Snowflake에서 지원되지 않습니다.
OPEN CURSOR¶
설명¶
커서를 사용하여 행을 검색하려면 먼저 커서를 열어야 합니다. (Redshift SQL Language Reference 커서 열기).
참고
이 구문은 Snowflake에서 완벽하게 지원됩니다.
문법 구문¶
샘플 소스 패턴¶
설정 데이터¶
Redshift¶
쿼리¶
Snowflake¶
쿼리¶
인자 없이 커서 열기¶
입력 코드:¶
Redshift¶
출력 코드:¶
Redshift¶
인자가 있는 커서 열기¶
Cursor arguments have to be bound per each one of its uses, SnowConvert AI will generate the bindings, as well as reorder and repeat the passed values to the OPEN statement as needed to satisfy the bindings.
Redshift¶
쿼리¶
결과¶
Snowflake¶
쿼리¶
결과¶
프로시저 매개 변수 또는 로컬 변수가 있는 커서 열기¶
The procedure parameters or local variables have to be bound per each one of its uses in the cursor query, SnowConvert AI will generate the bindings and add the parameter or variable names to the OPEN statement, even if the cursor originally had no parameters.
Redshift¶
쿼리¶
결과¶
Snowflake¶
쿼리¶
결과¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs.¶
관련 EWIs 가 없습니다.
DECLARE CURSOR¶
설명¶
새 커서를 정의합니다. 커서를 사용하여 더 큰 쿼리 결과 세트에서 한 번에 몇 행씩 검색할 수 있습니다. (Redshift SQL Language Reference 커서 선언).
참고
이 구문은 Snowflake에서 완벽하게 지원됩니다.
문법 구문¶
샘플 소스 패턴¶
입력 코드:¶
입력 코드:¶
Redshift¶
출력 코드:¶
Redshift¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs.¶
관련 EWIs 가 없습니다.
DECLARE REFCURSOR¶
설명¶
refcursor데이터 타입은 단순히 커서에 대한 참조를 보관합니다. 커서 변수를refcursor유형의 변수로 선언하여 생성할 수 있습니다
참고
Refcursor 선언은 Snowflake 에서 완벽하게 지원됩니다.
문법 구문¶
Snowflake는 REFCURSOR 데이터 타입을 지원하지 않으므로 REFCURSOR 변수를 RESULTSET 타입으로 변환하여 기능을 복제합니다. REFCURSOR 페이지를 여는 데 사용되는 쿼리는 RESULTSET 변수에 할당된 후 새 커서가 생성되어 RESULTSET 변수에 링크됩니다. 또한 커서 로직 내에서 원본 REFCURSOR 에 대한 모든 참조가 새 커서를 사용하도록 업데이트되어 원래 기능을 복제합니다.
샘플 소스 패턴¶
케이스: 1회 사용¶
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
케이스: 동적 Sql이 있는 커서 ¶
입력 코드:¶
Redshift¶
출력 코드:¶
Redshift¶
케이스: 여러 번 사용: ¶
입력 코드:¶
Redshift¶
출력 코드:¶
Snowflake¶
Known Issues¶
알려진 문제는 없습니다.
관련 EWIs.¶
관련 EWIs 가 없습니다.