home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 18 REXX / 18-REXX.zip / orarex.zip / SAMPLE2.CMD < prev    next >
OS/2 REXX Batch file  |  1995-06-29  |  3KB  |  117 lines

  1. /*** rexx ********************************************************************/
  2. /*                                                                           */
  3. /* SAMPLE2.CMD - Oracle-REXX Interface Sample                                */
  4. /*                                                                           */
  5. /* Sample REXX command file to demonstrate dynamic SQL method 4.             */
  6. /*                                                                           */
  7. /*****************************************************************************/
  8.  
  9.  
  10. CALL RXFUNCADD "SQLEXEC", "RXORA", "SQLEXEC"
  11.  
  12. /*---------------------------------------------------------------------------*/
  13.  
  14. SAY "Connecting as SCOTT/TIGER"
  15.  
  16. user     = "SCOTT"
  17. password = "TIGER"
  18. connect  = "2:"
  19.  
  20. CALL SQLEXEC "CONNECT :user IDENTIFIED BY :password USING :connect"
  21. CALL CheckSQLReturn
  22.  
  23. /*---------------------------------------------------------------------------*/
  24. SAY
  25. SAY "This sample command file allows you to enter SQL statements to be"
  26. SAY "executed.  Enter an SQL statement without a terminating semicolon."
  27. SAY "For example: select * from emp"
  28.  
  29. CALL SQLEXEC "DECLARE stmt STATEMENT"
  30. CALL CheckSQLReturn
  31.  
  32. CALL SQLEXEC "DECLARE csr CURSOR FOR stmt"
  33. CALL CheckSQLReturn
  34.  
  35. loop:
  36. SAY
  37. SAY "Enter a SQL statement or EXIT"
  38. PARSE PULL sql
  39. PARSE UPPER VAR sql stmt_type .
  40.  
  41. DO WHILE stmt_type <> "EXIT"
  42.   SAY "  Preparing the statement"
  43.   CALL SQLEXEC "PREPARE stmt FROM :sql"
  44.   CALL CheckSQLReturn
  45.  
  46.   SAY "  Describing the statement"
  47.   CALL SQLEXEC "DESCRIBE BIND VARIABLES FOR stmt INTO bind_desc"
  48.   CALL CheckSQLReturn
  49.  
  50.   CALL SQLEXEC "DESCRIBE SELECT LIST FOR stmt INTO sel_desc"
  51.   CALL CheckSQLReturn
  52.  
  53.   DO i = 1 TO bind_desc.sqld
  54.     SAY "Enter value for" bind_desc.i.sqlname
  55.     PARSE PULL bind_desc.i.sqldata
  56.     bind_desc.i.sqltype = 5
  57.     bind_desc.i.sqllen  = 0
  58.     bind_desc.i.sqlind  = 0
  59.   END
  60.  
  61.   DO i = 1 TO sel_desc.sqld
  62.     sel_desc.i.sqltype = 5
  63.     sel_desc.i.sqllen  = 0
  64.   END
  65.  
  66.   SAY "  Executing the statement"
  67.   IF stmt_type <> "SELECT" THEN DO
  68.     CALL SQLEXEC "EXECUTE stmt USING DESCRIPTOR bind_desc"
  69.     CALL CheckSQLReturn
  70.   END
  71.   ELSE DO
  72.     CALL SQLEXEC "OPEN csr USING DESCRIPTOR bind_desc"
  73.     CALL CheckSQLReturn
  74.  
  75.     CALL SQLEXEC "FETCH csr USING DESCRIPTOR sel_desc"
  76.     CALL CheckSQLReturn
  77.     DO WHILE (result = 0) & (sqlca.sqlcode = 0)
  78.       SAY "  ---"
  79.       DO i = 1 TO sel_desc.sqld
  80.         SAY " " left(sel_desc.i.sqlname,15)  sel_desc.i.sqldata
  81.       END
  82.       CALL SQLEXEC "FETCH csr USING DESCRIPTOR sel_desc"
  83.     END
  84.  
  85.     CALL SQLEXEC "CLOSE csr"
  86.     CALL CheckSQLReturn
  87.   END
  88.  
  89.   SAY
  90.   SAY "Enter a SQL statement or EXIT"
  91.   PARSE PULL sql
  92.   PARSE UPPER VAR sql stmt_type .
  93. END
  94.  
  95. /*---------------------------------------------------------------------------*/
  96.  
  97. SAY "Disconnect"
  98.  
  99. CALL SQLEXEC "ROLLBACK RELEASE"
  100.  
  101. EXIT
  102.  
  103. /*---------------------------------------------------------------------------*/
  104.  
  105. CheckSQLReturn:
  106.   IF result <> 0 THEN DO
  107.     SAY "Invalid embedded SQL statement ("result")."
  108.     SIGNAL loop
  109.   END
  110.   ELSE IF sqlca.sqlcode <> 0 THEN DO
  111.     SAY sqlca.sqlerrmc
  112.     IF sqlca.sqlcode <> 1403 THEN
  113.       SIGNAL loop
  114.   END
  115.   RETURN result
  116.  
  117.