GOTO

Translation reference for the conversion of Goto command to Snowflake Scripting

Description

The BTEQ Goto command skips over all intervening BTEQ commands and SQL statements until a specified label is encountered, then resumes processing as usual. (Teradata Basic Query Reference Goto Command)

.GOTO LabelName;

Sample Source Patterns

Basic GOTO example

Snowflake scripting doesn't have an equivalent statement for Teradata BTEQ Goto command, but fortunately it can be removed from the input code and get an equivalent code, due to the sequence of Goto and Labels commands in reverse topological order always. In other words, the definitions come after their uses. Thus, Snowconvert just needs to copy bottom-up all Label section code to its corresponding Goto statements.

.LOGON 0/dbc,dbc;
   DATABASE tduser;
.LOGON 127.0.0.1/dbc,dbc;

INSERT INTO TABLEB VALUES (1);
.IF activitycount = 0 then .GOTO SECTIONA
.IF activitycount >= 1 then .GOTO SECTIONB

.label SECTIONA
.REMARK 'Zero Hours on Account'
.GOTO SECTIONC

.label SECTIONB
.REMARK 'Total Hours on Account'

.label SECTIONC
.logoff      
.exit
EXECUTE IMMEDIATE
$$
  DECLARE
    STATUS_OBJECT OBJECT;
  BEGIN
    /*** MSC-ERROR - MSCEWI1037 - TRANSLATION FOR SCRIPT STATEMENTS IS PLANNED TO BE DELIVERED IN THE FUTURE ***/
    /*.LOGON 0/dbc,dbc;*/
     
    /*** MSC-ERROR - MSCEWI1037 - TRANSLATION FOR SCRIPT STATEMENTS IS PLANNED TO BE DELIVERED IN THE FUTURE ***/
    /*   DATABASE tduser;*/
     
    /*** MSC-ERROR - MSCEWI1037 - TRANSLATION FOR SCRIPT STATEMENTS IS PLANNED TO BE DELIVERED IN THE FUTURE ***/
    /*.LOGON*/
     
    /*** MSC-ERROR - MSCEWI1001 - UNRECOGNIZED TOKEN ON LINE 3 OF THE SOURCE CODE. ***/
    /*--127.0.0.1/dbc,dbc*/
     
    BEGIN
      INSERT INTO TABLEB
      VALUES (1);
      STATUS_OBJECT := OBJECT_CONSTRUCT('SQLROWCOUNT', SQLROWCOUNT);
    EXCEPTION
      WHEN OTHER THEN
        STATUS_OBJECT := OBJECT_CONSTRUCT('SQLCODE', SQLCODE, 'SQLERRM', SQLERRM, 'SQLSTATE', SQLSTATE);
    END;
    IF (STATUS_OBJECT['SQLROWCOUNT'] = 0) THEN
      /*** MSC-ERROR - MSCEWI2071 - GOTO SECTIONA WAS REPLACED WITH THE LABEL SECTION WITH THE SAME NAME ***/
       
      /*.label SECTIONA*/
       
      /*.REMARK 'Zero Hours on Account'*/
       
       
      /*.label SECTIONC*/
       
      /*.logoff*/
       
      RETURN 0;
    END IF;
    IF (STATUS_OBJECT['SQLROWCOUNT'] >= 1) THEN
      /*** MSC-ERROR - MSCEWI2071 - GOTO SECTIONB WAS REPLACED WITH THE LABEL SECTION WITH THE SAME NAME ***/
       
      /*.label SECTIONB*/
       
      /*.REMARK 'Total Hours on Account'*/
       
      /*.label SECTIONC*/
       
      /*.logoff*/
       
      RETURN 0;
    END IF;
    /*** MSC-WARNING - MSCEWI1002 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE.  ***/
    /*.label SECTIONA*/
     
    /*** MSC-ERROR - MSCEWI1037 - TRANSLATION FOR SCRIPT STATEMENTS IS PLANNED TO BE DELIVERED IN THE FUTURE ***/
    /*.REMARK 'Zero Hours on Account'*/
     
    /*** MSC-ERROR - MSCEWI2071 - GOTO SECTIONC WAS REPLACED WITH THE LABEL SECTION WITH THE SAME NAME ***/
     
    /*.label SECTIONC*/
     
    /*.logoff*/
     
    RETURN 0;
    /*** MSC-WARNING - MSCEWI1002 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE.  ***/
    /*.label SECTIONB*/
     
    /*** MSC-ERROR - MSCEWI1037 - TRANSLATION FOR SCRIPT STATEMENTS IS PLANNED TO BE DELIVERED IN THE FUTURE ***/
    /*.REMARK 'Total Hours on Account'*/
     
    /*** MSC-WARNING - MSCEWI1002 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE.  ***/
    /*.label SECTIONC*/
     
    /*** MSC-ERROR - MSCEWI1037 - TRANSLATION FOR SCRIPT STATEMENTS IS PLANNED TO BE DELIVERED IN THE FUTURE ***/
    /*.logoff*/
     
    RETURN 0;
  END
$$

Last updated