Collections & Records

This section is focused in the transformation of composite data types: Collections and Records.

Records

You might also be interested in Records declaration.

Oracle

CREATE OR REPLACE PROCEDURE RECORDS_PROC AS 
 TYPE DEPTRECTYP IS RECORD (
    DEPT_ID    NUMBER(4) NOT NULL := 10,
    DEPT_NAME  VARCHAR2(30) NOT NULL := 'ADMINISTRATION',
    MGR_ID     NUMBER(6) := 200,
    LOC_ID     NUMBER(4) := 1700
  );
  
  TYPE NAME_REC IS RECORD (
    FIRST  EMPLOYEES.FIRST_NAME%TYPE,
    LAST   EMPLOYEES.LAST_NAME%TYPE
  );
 
  TYPE CONTACT IS RECORD (
    NAME  NAME_REC,-- NESTED RECORD
    PHONE EMPLOYEES.PHONE_NUMBER%TYPE
  );
 
  DEPT1 DEPTRECTYP;
  DEPT_NAME DEPTRECTYP;
  C1 CONTACT;
BEGIN
  DEPT1.DEPT_NAME := 'PURCHASING';
  C1.NAME.FIRST := 'FALVARADO';
  C1.PHONE := '50687818481';
  SELECT * INTO DEPT1 FROM FTABLE46;
  INSERT INTO TABLA1 VALUES (DEPT1.DEPT_NAME);
  INSERT INTO TABLA1 VALUES (DEPT_NAME.DEPT_NAME);
  EXECUTE IMMEDIATE 'SELECT * FROM FTABLE46' INTO DEPT_NAME;
END;

Snowflake

Transformation for "SELECT INTO Record" is in progress.

CREATE OR REPLACE PROCEDURE PUBLIC.RECORDS_PROC ()
RETURNS STRING
LANGUAGE JAVASCRIPT
EXECUTE AS CALLER
AS
$$
   // REGION SnowConvert Helpers Code 
   
    class DEPTRECTYP {
      DEPT_ID = 10
      DEPT_NAME = `ADMINISTRATION`
      MGR_ID = 200
      LOC_ID = 1700
      constructor() {
         [...arguments].map((element,Index) => this[(Object.keys(this))[Index]] = element)
      }
   }
   class NAME_REC {
      FIRST
      LAST
      constructor() {
         [...arguments].map((element,Index) => this[(Object.keys(this))[Index]] = element)
      }
   }
   class CONTACT {
      NAME = new NAME_REC()
      PHONE
      constructor() {
         [...arguments].map((element,Index) => this[(Object.keys(this))[Index]] = element)
      }
   }
   let DEPT1 = new DEPTRECTYP();
   let DEPT_NAME = new DEPTRECTYP();
   let C1 = new CONTACT();
   DEPT1.DEPT_NAME = `PURCHASING`;
   C1.NAME.FIRST = `FALVARADO`;
   C1.PHONE = `50687818481`;
   [DEPT1] = EXEC(`SELECT * FROM PUBLIC.FTABLE46`);
   EXEC(`INSERT INTO PUBLIC.TABLA1 VALUES (?)`,[DEPT1.DEPT_NAME]);
   EXEC(`INSERT INTO PUBLIC.TABLA1 VALUES (?)`,[DEPT_NAME.DEPT_NAME]);
   EXEC(`SELECT * FROM PUBLIC.FTABLE46`,{
      rec : DEPT_NAME
   });
$$;

Last updated