This section describes the usage of different functions to achieve functional equivalence for Teradata cursors in JavaScript.
The cursor helper is a function that contains the main four actions that Teradata cursors perform such as Open, Fetch, Next, and Close.
CURSOR(), the main routine which declares the needed variables and other sub-routines.
OPEN(), opens the cursor executing the given statement, and updates the necessary variables.
NEXT(), moves the cursor to the next row (if any) of the statement and sets every column value to the current row.
FETCH(), obtains the values (if any) from the response of the statement executed.
CLOSE(), removes the temporary table from the _OUTQUERIES (if it was added in the EXEC helper) and unsets the necessary variables.
Some parts of the output code are omitted for clarity reasons.
Cursor Sample Usage
Teradata
IN -> Teradata_01.sql
-- Additional Params: -t JavaScriptReplaceprocedure procedure1() dynamic result sets2begin-------- Local variables --------declare sql_cmd varchar(20000) default' '; declare num_cols integer;------- Declare cursor with return only-------declare resultset cursorwithreturn only for firststatement;------- Declare cursor -------declare cur2 cursorforselectcount(columnname) from table1;-------- Set --------set sql_cmd='sel * from table1';-------- Prepare cursor -------- prepare firststatement from sql_cmd; -------- Open cursors --------open resultset; open cur1;-------- Fetch -------------fetch cur1 into val1, val2;-------- Close cursor --------close cur1;end;
Snowflake output
OUT -> Teradata_01.sql
CREATE OR REPLACE PROCEDURE procedure1 ()RETURNS STRINGLANGUAGE JAVASCRIPTCOMMENT ='{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"teradata"}}'EXECUTE AS CALLERAS$$// SnowConvert Helpers Code section is omitted.//------ Local variables -------- var SQL_CMD =` `; var NUM_COLS; var RESULTSET = new CURSOR(() => FIRSTSTATEMENT,[],true);//----- Declare cursor ------- var CUR2 = new CURSOR(`SELECT count(columnname)from table1`,[],false);//------ Set -------- SQL_CMD =`SELECT * from table1`;//------ Prepare cursor -------- var FIRSTSTATEMENT = SQL_CMD;//------ Open cursors -------- RESULTSET.OPEN(); CUR1.OPEN();//------ Fetch ------------- CUR1.FETCH() && ([val1,val2] = CUR1.INTO());//------ Close cursor -------- CUR1.CLOSE();return PROCRESULTS();$$;