SnowConvert AI - Oracle - CURSOR¶
설명¶
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
Cursors are pointers that allow users to iterate through query results. For more information, see the Oracle Cursors documentation.
Oracle 커서 구문¶
커서 정의
커서 열기
커서 가져오기
커서 닫기
커서 특성
커서 FOR 루프
Snowflake Scripting has support for cursors, however, they have fewer functionalities compared to Oracle. For more information, see the Snowflake Scripting cursors documentation.
Snowflake Scripting 커서 구문¶
커서 선언
커서 열기
커서 가져오기
커서 닫기
커서 FOR 루프
샘플 소스 패턴¶
1. Basic cursor example¶
Oracle 커서 예¶
Snowflake Scripting 커서 예¶
2. Explicit Cursor For Loop¶
Oracle 명시적 Cursor For Loop의 예¶
Snowflake Scripting 명시적 Cursor For Loop의 예¶
3. Implicit Cursor For Loop¶
Oracle 암시적 Cursor For Loop의 예¶
Snowflake Scripting 암시적 Cursor For Loop의 예¶
4. Parameterized Cursor¶
“?”를 사용할 수 있습니다. 선언 섹션의 커서 필터 조건에서 바인드 변수를 정의합니다. 커서를 열면서 “USING <bind_variable_1 >” 구문을 추가하여 바인드 변수를 전달할 수 있습니다.
다음은 커서에서 매개 변수를 사용할 때 발생할 수 있는 시나리오의 몇 가지 예입니다.
4.1 기본 커서 매개 변수화 예제¶
Oracle 매개 변수가 있는 커서의 예¶
Snowflake 매개 변수가 있는 커서의 예¶
4.여러 개의 전송 매개 변수가 있는 매개 변수화된 커서 2개¶
Oracle 매개 변수가 있는 커서의 예¶
Snowflake 매개 변수가 있는 커서의 예¶
4.쿼리에서 프로시저 매개 변수를 사용하는 매개 변수화된 커서 3 개¶
Oracle 매개 변수가 있는 커서의 예¶
Snowflake 매개 변수가 있는 커서의 예¶
5. Using Cursors In Fetch And For Loop¶
커서는 FOR 문을 사용하여 제어할 수 있으며, 커서의 모든 레코드를 처리할 수 있고 FETCH 문은 커서에서 반환된 값을 레코드별로 변수 세트(PLSQL 레코드일 수 있음)에 넣습니다
5.1 루프를 위한 커서¶
Oracle Cursor For Loop의 예¶
Snowflake Cursor For Loop의 예¶
5.2 커서 가져오기¶
Oracle 커서 가져오기 예¶
Snowflake 커서 가져오기 예¶
Known Issues¶
1. RETURN clause is not supported in Snowflake Scripting Cursor Declaration¶
Snowflake Scripting에 대한 커서 선언에는 이 절이 포함되어 있지 않습니다. 기능적 동등성을 얻기 위해 Oracle 커서 정의에서 제거할 수 있습니다.
2. OPEN statement cannot pass values for declared arguments¶
커서에 인자를 선언할 수 있지만, 그 값은 Snowflake Scripting에서 할당할 수 없습니다. 가장 좋은 대안은 바인드 변수와 함께 USING 절을 사용하는 것입니다.
3. FETCH statement cannot use records¶
Snowflake Scripting은 레코드를 지원하지 않습니다. 그러나 OBJECT 데이터 타입 및 OBJECT_CONSTRUCT() 메서드를 사용하여 마이그레이션할 수 있습니다. 자세한 내용은 레코드 유형 정의 섹션을 참조하세요.
4. FETCH BULK COLLECT INTO clause is not supported in Snowflake Scripting¶
Snowflake Scripting은 BULK COLLECT INTO 절을 지원하지 않습니다. 그러나 ARRAY_AGG를 임시 테이블과 함께 사용하여 커서 정보에 해당하는 데이터로 새 변수를 구성할 수 있습니다. 자세한 내용은 컬렉션 대량 작업 섹션을 참조하세요.
5. Cursor attributes do not exist in Snowflake Scripting¶
Oracle 커서는 사용자가 커서가 열려 있는지 또는 가져온 행의 양과 같은 상태를 확인할 수 있는 다양한 특성이 있지만, 커서 상태와 관련된 이러한 특성은 Snowflake Scripting에는 존재하지 않습니다.
6. The cursor’s query does not have access to the procedure’s variables and parameters¶
Oracle에서 커서 선언의 쿼리는 프로시저 변수 및 매개 변수에 액세스할 수 있지만, Snowflake Scripting에서는 액세스할 수 없습니다. 이에 대한 대안은 바인드 변수와 함께 USING 절을 사용하는 것입니다.
7. %NOTFOUND attribute is not supported in Snowflake Scripting Cursor¶
Oracle에서 사용할 수 있습니다. 열린 커서에서 첫 번째 가져오기 전에 cursor_name%NOTFOUND 는 마지막 가져오기가 행을 반환하지 못한 경우 TRUE 를 반환하고, 마지막 가져오기가 행을 반환한 경우 FALSE 를 반환합니다. 이 특성의 사용을 지원하지 않는 대신 커서 결과에 할당된 변수에 값이 포함되어 있는지 확인할 수 있습니다
CURSOR DECLARATION¶
참고
관련 없는 문.
경고
이 문은 관련이 없는 구문이므로 마이그레이션에서 제거됩니다. 즉, Snowflake에서는 필요하지 않습니다.
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
이 섹션에서는 Oracle에서 커서 선언의 변환에 대해 설명합니다. 자세한 내용은 Oracle의 프로시저 및 커서 에 대한 다음 설명서를 검토하십시오.
샘플 소스 패턴¶
CURSOR DECLARATION¶
이 예제에서는 CURSOR 문이 삭제된 것을 확인할 수 있습니다. 이것은 Snowflake를 대상으로 하는 변환에서 관련 없는 구문입니다.
Oracle¶
Snowflake¶
Known Issues¶
문제가 발견되지 않았습니다.
관련 EWIs¶
관련 EWIs 없음.
커서 변수¶
커서 변수 및 OPEN FOR 문에 대한 변환 참조
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
커서 변수는 1개의 쿼리에만 제한되지 않는 명시적 커서와 같습니다.
Oracle 구문¶
참조 커서 유형 정의
커서 변수 선언
OPEN FOR 문
경고
Snowflake Scripting은 커서 변수 및 OPEN FOR 문과 직접적으로 동등하지는 않지만, 다른 해결 방법을 사용하여 에뮬레이션하여 기능적 동등성을 얻을 수 있습니다.
샘플 소스 패턴¶
1. OPEN FOR statement with dynamic SQL inside a VARCHAR variable¶
Oracle 예¶
Snowflake Scripting의 예¶
2. OPEN FOR statement with dynamic SQL inside a string literal.¶
Oracle 예¶
Snowflake Scripting의 예¶
3. OPEN FOR statement with SELECT statement¶
Oracle 예¶
Snowflake Scripting의 예¶
4. Cursor Variable declared with REF CURSOR type¶
Oracle 예¶
Snowflake Scripting의 예¶
5. OPEN FOR statement with USING clause¶
Oracle 예¶
Snowflake Scripting의 예¶
Known Issues¶
문제가 발견되지 않았습니다.
관련 EWIs¶
SSC-EWI-0030: 아래 문에는 동적 SQL의 사용법이 있습니다.
SSC-EWI-0058: 이 기능은 현재 Snowflake Scripting에서 지원되지 않습니다.
PARAMETRIZED CURSOR¶
매개 변수화된 커서는 Snowflake Scripting에서 지원되지 않습니다.
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
Oracle은 선언된 커서에 대한 매개 변수를 지원합니다. 그러나 Snowflake Scripting은 이 기능을 지원하지 않으므로 선언 및 커서 사용이 불가능합니다.
코드 예시¶
Oracle¶
Snowflake¶
권장 사항¶
커서에서 쿼리에 바인딩을 사용하고
USING절로 커서를 열어 보십시오. 1개의 커서에서 여러 번 사용되는 매개 변수는USING절에서 변수를 여러 번 전달해야 할 수 있습니다.
Snowflake 쿼리¶
커서를 수동으로 변경하여 바인딩을 사용합니다.
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
관련 EWIs¶
SSC-PRF-0004: 이 문에는 cursor for loop의 사용법이 있습니다.
매개 변수 또는 프로시저 변수를 사용하는 커서에 대한 해결 방법¶
설명¶
이 섹션에서는 커서 쿼리 내에서 커서 매개 변수 및 프로시저 변수의 사용을 시뮬레이션하는 방법을 설명합니다. 변수 또는 매개 변수의 이름은 ? 기호를 사용하여 바인딩으로 바뀝니다. 그런 다음 커서가 열리면 USING 절과 함께 값을 전달해야 합니다.
참고
로컬 변수가 있는 커서¶
사용되는 변수 또는 프로시저 매개 변수에 대한 커서에서 쿼리에 대한 바인딩을 사용하고 USING 절로 커서를 엽니다.
Oracle 커서¶
Snowflake Scripting 커서¶
매개 변수가 있는 커서¶
사용되는 각 매개 변수에 대해 커서에서 쿼리에 대한 바인딩을 사용하고 USING 절로 커서를 엽니다. 1개의 커서에서 여러 번 사용되는 매개 변수는 USING 절에서 변수를 여러 번 전달해야 할 수 있습니다.
Oracle 커서¶
Snowflake Scripting 커서¶
관련 EWIs¶
SSC-PRF-0004: 이 문에는 cursor for loop의 사용법이 있습니다.