SnowConvert AI - Oracle - CREATE FUNCTION¶
Oracle Create 함수를 Snowflake Snow Scripting으로 변환
설명¶
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
저장 함수 (사용자 함수 또는 사용자 정의 함수)는 이름으로 호출할 수 있는 PL/SQL 문의 집합입니다. 저장 프로시저는 함수가 호출된 환경에 값을 반환한다는 점을 제외하고는 프로시저와 매우 유사합니다. 사용자 함수는 SQL 식의 일부로 사용할 수 있습니다.
호출 명세 는 Java 메서드 또는 3세대 언어(3GL) 루틴을 선언하여 PL/SQL 에서 호출할 수 있도록 합니다.
CALLSQL 문을 사용하여 이러한 메서드나 루틴을 호출할 수도 있습니다. 호출 사양은 호출이 수행될 때 어떤 Java 메서드 또는 공유 라이브러리의 어떤 명명된 함수를 호출할지 Oracle 데이터베이스에 알려줍니다. 또한 데이터베이스에 인자 및 반환 값에 대해 어떤 유형 변환을 수행할지 알려줍니다. Oracle SQL Language Reference 생성 함수.
Oracle 구문¶
For more information, see the Oracle CREATE FUNCTION documentation.
Oracle Create 함수 구문¶
Snowflake 구문¶
Snowflake는 사용자 정의 함수에서 3가지 언어를 지원합니다.
SQL
JavaScript
Java
현재, SnowConvert AI는 SQL 및 JavaScript만 대상 언어로 지원합니다.
For more information, see the Snowflake UDF overview.
SQL¶
참고
SQL 사용자 정의 함수는 본문으로 1개의 쿼리만 지원합니다. 데이터베이스에서 읽을 수는 있지만 쓰거나 수정할 수는 없습니다(스칼라 SQL UDFs).
JavaScript¶
참고
JavaScript 사용자 정의 함수는 본문에 여러 문을 허용하지만 데이터베이스 쿼리를 수행할 수는 없습니다. (스칼라 JavaScript UDFs).
샘플 소스 패턴¶
샘플 보조 데이터¶
참고
이 코드는 예제를 더 잘 이해하기 위해 실행한 것입니다.
Oracle¶
Snowflake¶
Known Issues¶
문제가 발견되지 않았습니다.
반환 변수에 대한 커서¶
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
이 패턴은 커서를 사용하여 단일 값을 가져와 반환하는 함수를 Oracle PL/SQL 에서 정의합니다.
구성 요소:
함수 선언:
CREATE FUNCTION functionName(parameters) RETURN returnType입력 매개 변수와 반환 유형으로 함수를 선언합니다.
변수 선언:
반환 변수를 포함한 변수를 선언합니다.
커서 선언:
CURSOR cursorName IS SELECT singleColumn FROM ... WHERE ... [AND col1 = localVar1];선택적 필터링 조건이 있는 테이블에서 단일 열을 선택하는 커서를 정의합니다.
BEGIN-END 블록:
변수 할당.
커서를 엽니다.
결과를 반환 변수로 가져옵니다.
커서를 닫습니다.
가져온 값을 반환합니다.
이 경우 변수는 공통 테이블 식(CTE)으로 변환됩니다. 커서 내의 쿼리에 추가로 FETCH FIRST 1 ROW ONLY 절을 추가하여 FETCH CURSOR 의 동작을 시뮬레이션합니다.
RETURN 문이 최종 선택 문으로 변환됩니다.
쿼리¶
Oracle¶
Snowflake¶
결과¶
FUNC1() |
|---|
2004-05-03. |
Oracle¶
Snowflake¶
결과¶
FUNC1() |
|---|
2004-05-03. |
Known Issues¶
문제가 발견되지 않았습니다.
관련 EWIs¶
SSC-FDM-OR0042: 타임스탬프로 변환된 날짜 유형의 동작이 다릅니다.
SSC-EWI-0073: 보류 중 함수 동등성 검토.
IF 문이 있는 커서¶
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
이 패턴은 조건부로 커서를 사용하여 IF 문을 기반으로 값을 가져와 반환하는 함수를 정의합니다.
구성 요소:
함수 선언:
CREATE FUNCTION functionName(parameters) RETURN returnType입력 매개 변수와 반환 유형으로 함수를 선언합니다.
커서 선언:
CURSOR cursorName IS SELECT singleColumn FROM ... WHERE ... [AND col1 = localVar1];선택적 필터링 조건이 있는 테이블에서 단일 열을 선택하는 커서를 정의합니다.
변수 선언:
반환 변수를 포함한 변수를 선언합니다.
IF 문이 있는 BEGIN-END 블록:
변수 할당.
조건이 true인지 확인합니다.
true이면 커서를 열고 결과를 반환 변수로 가져온 다음 커서를 닫고 가져온 값을 반환합니다. (커서는
ELSE블록에서도 열 수 있으며 동일한 조건을 충족해야 합니다.)ELSE블록은 선택 사항이며, 존재하는 경우 할당 또는RETURN문이 될 수 있는 단일 문만 포함해야 합니다.
변수는 공통 테이블 식(CTE)으로 변환됩니다. 커서 내의 쿼리에 추가로 FETCH FIRST 1 ROW ONLY 절을 추가하여 FETCH CURSOR 의 동작을 시뮬레이션합니다.
IF/ELSE 문은 쿼리 내에서 조건문을 허용하는 select 내에 CASE EXPRESSION를 사용하여 처리할 수 있습니다. RETURN 문은 최종 select…로 변환됩니다.
쿼리¶
Oracle¶
Snowflake¶
결과¶
FUNC2(0) |
|---|
NULL |
FUNC2(1) |
|---|
33 |
Oracle¶
Snowflake¶
결과¶
FUNC2(0) |
|---|
33 |
FUNC2(1) |
|---|
2 |
Oracle¶
Snowflake¶
결과¶
FUNC2(0) |
|---|
0 |
FUNC2(1) |
|---|
33 |
Known Issues¶
문제가 발견되지 않았습니다.
관련 EWIs¶
EWIs 관련 없음.
Multiple IF statement¶
이 패턴은 로컬 변수에 조건문을 사용하는 함수를 정의합니다.
구성 요소:
함수 선언:
CREATE FUNCTION functionName(parameters) RETURN returnType입력 매개 변수와 반환 유형으로 함수를 선언합니다.
변수 선언:
반환 변수를 포함한 변수를 선언합니다.
IF 문이 있는 BEGIN-END 블록:
조건이 true인지 확인합니다.
각 케이스는 동일한 변수에 값을 할당하는 데 사용됩니다.
변환:¶
DECLARE SECTION : variables with default expression are moved to a common table expression.
IF/ELSE 문은 쿼리 내에서 조건문을 허용하는 select 내에 CASE EXPRESSION를 사용하여 처리할 수 있습니다.
RETURN 문이 최종 선택 문으로 변환됩니다.
Oracle¶
Snowflake¶
Oracle¶
Snowflake¶
Oracle¶
Snowflake¶
Oracle¶
Snowflake¶
Known Issues¶
문제가 발견되지 않았습니다.
관련 EWIs¶
SSC-FDM-OR0042: 타임스탬프로 변환된 날짜 유형의 동작이 다릅니다.
SSC-EWI-0073: 보류 중 함수 동등성 검토.
SSC-EWI-OR0036: 유형 확인 문제로 인해 문자열과 날짜 사이에서 산술 연산이 올바르게 동작하지 않을 수 있습니다.
Snowflake 스크립트 UDF(SCALAR)¶
Translation reference for Oracle User Defined Functions to Snowflake Scripting UDFs
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
이제 SnowConvert는 특정 기준을 충족하는 경우 Oracle PL/SQL 사용자 정의 함수에서 Snowflake Scripting UDFs(SnowScriptUDFs)로의 직접적인 변환을 지원합니다.
Snowflake Scripting UDFs는 SQL UDF 본문 내에서 Snowflake의 프로시저 언어 구문(Snowscript)을 사용하여 작성된 사용자 정의 함수입니다. 데이터베이스 액세스 없이 변수, 루프, 조건부 논리, 예외 처리를 지원합니다.
함수가 SnowScript UDFs가 되는 경우¶
SnowConvert는 각 Oracle 함수를 분석하고 적절한 Snowflake 대상을 자동으로 결정합니다. 함수는 데이터 액세스 작업 없이 프로시저 논리만 포함하는 경우 SnowScript UDF가 됩니다.
샘플 소스 패턴¶
단순 계산 함수¶
데이터를 쿼리하지 않고 계산을 수행하는 기본 함수입니다.
Oracle¶
결과¶
CALCULATETAX(1000, 15) |
|---|
150 |
Snowflake(SnowScript UDF)¶
결과¶
CALCULATETAX(1000, 15) |
|---|
150 |
IF/ELSIF/ELSE 논리가 있는 함수¶
비즈니스 논리에 조건문을 사용하는 함수입니다.
Oracle¶
결과¶
GETSHIPPINGCOST(75, 25) |
|---|
30 |
Snowflake(SnowScript UDF)¶
결과¶
GETSHIPPINGCOST(75, 25) |
|---|
30 |
FOR Loop가 있는 함수¶
반복 계산을 위해 루프를 사용하는 함수입니다.
Oracle¶
결과¶
CALCULATECOMPOUNDINTEREST(1000, 5, 3) |
|---|
1157.63 |
Snowflake(SnowScript UDF)¶
결과¶
CALCULATECOMPOUNDINTEREST(1000, 5, 3) |
|---|
1157.63 |
CASE 및 DECODE 논리¶
분류를 위해 CASE 식 및 DECODE를 사용하는 함수입니다.
Oracle¶
결과¶
GETCUSTOMERTIER(3000, 6) |
|---|
GOLD |
Snowflake(SnowScript UDF)¶
결과¶
GETCUSTOMERTIER(3000, 6) |
|---|
GOLD |
Select Into variable assignment¶
Functions using simple select into for variable assignment.
Oracle¶
결과¶
CALCULATEPRICE(100, 3) |
|---|
285 |
Snowflake(SnowScript UDF)¶
결과¶
CALCULATEPRICE(100, 3) |
|---|
285 |
Known Issues¶
경고
SnowConvert AI will not translate UDFs containing the following elements into SnowScripting UDFs, as these features are unsupported in SnowScripting UDFs:
데이터베이스 테이블 액세스
커서 사용
기타 UDFs 호출
집계 또는 윈도우 함수 포함
DML 작업(INSERT/UPDATE/DELETE) 수행
결과 세트 반환
관련 EWIs¶
SSC-EWI-0067: UDF가 Snowflake 프로시저로 변환되었으며, 쿼리 내에서 프로시저를 호출하는 기능은 지원되지 않습니다.
SSC-EWI-0068: 사용자 정의 함수가 Snowflake 프로시저로 변환되었습니다.
SSC-EWI-0073: 보류 중 함수 동등성 검토.
SSC-FDM-OR0042: 타임스탬프로 변환된 날짜 유형의 동작이 다릅니다.