LOG ERROR
Description
The
FORALLstatement runs one DML statement multiple times, with different values in theVALUESandWHEREclauses. (Oracle PL/SQL Language Reference FORALL Statement).
FORALL index IN bounds_clause [ SAVE ] [ EXCEPTIONS ] dml_statement ;Snowflake Scripting has no direct equivalence with the FORALL statement, however can be emulated with different workarounds to get functional equivalence.
Sample Source Patterns
Setup Data
Oracle
CREATE TABLE error_table (
ORA_ERR_NUMBER$ NUMBER,
ORA_ERR_MESG$ VARCHAR2(2000),
ORA_ERR_ROWID$ ROWID,
ORA_ERR_OPTYP$ VARCHAR2(2),
ORA_ERR_TAG$ VARCHAR2(2000)
);
--departments
CREATE TABLE parent_table(
Id INT PRIMARY KEY,
Name VARCHAR2(10)
);
INSERT INTO parent_table VALUES (10, 'IT');
INSERT INTO parent_table VALUES (20, 'HR');
INSERT INTO parent_table VALUES (30, 'INFRA');
--employees
CREATE TABLE source_table(
Id INT PRIMARY KEY,
Name VARCHAR2(20) NOT NULL,
DepartmentID INT REFERENCES parent_table(Id)
);
INSERT INTO source_table VALUES (101, 'Anurag111111111', 10);
INSERT INTO source_table VALUES (102, 'Pranaya11111111', 20);
INSERT INTO source_table VALUES (103, 'Hina11111111111', 30);
--a copy of source
CREATE TABLE target_table(
Id INT PRIMARY KEY,
Name VARCHAR2(10) NOT NULL,
DepartmentID INT REFERENCES parent_table(Id)
);
INSERT INTO target_table VALUES (101, 'Anurag', 10);Snowflake
1. MERGE INTO Inside a FORALL
Oracle
The three cases below have the same transformation to Snowflake Scripting and are functionally equivalent.
Snowflake
2. FORALL With INSERT INTO
Oracle
Snowflake
3. FORALL With Multiple Fetched Collections
Oracle
Snowflake
4. FORALL With Record of Collections
Oracle
Snowflake
5. FORALL With Dynamic SQL
Oracle
Snowflake
6. FORALL Without LOOPS
Oracle
Snowflake
7. FORALL With UPDATE Statements
Oracle
Snowflake
8. FORALL With DELETE Statements
Oracle
Snowflake
Known Issues
No issues were found.
Related EWIs
SSC-EWI-0030: The statement below has usages of dynamic SQL.
SSC-EWI-0036: Data type converted to another data type.
SSC-EWI-0058: Functionality is not currently supported by Snowflake Scripting.
SSC-EWI-0062: Custom type usage changed to variant.
SSC-EWI-OR0129: TYPE attribute could not be resolved.
SSC-FDM-0006: Number type column may not behave similarly in Snowflake.
SSC-FDM-OR0031: The error logging clause in DML statements is not supported by Snowflake.
SSC-PRF-0001: This statement has usages of cursor fetch bulk operations.
SSC-PRF-0003: Fetch inside a loop is considered a complex pattern, this could degrade Snowflake performance.
Last updated
