]> andersk Git - moira.git/commitdiff
chnages in the set_next_object function.
authorkostas <kostas>
Fri, 21 Sep 1990 11:52:27 +0000 (11:52 +0000)
committerkostas <kostas>
Fri, 21 Sep 1990 11:52:27 +0000 (11:52 +0000)
use of dynamic sql (i.e. sqlda).

server/qrtn.dc

index b297747012f59c3d43289da9a3f4b1fc3966110d..a5c10f8849f4a769c99890a4aa48e4c36efac894 100644 (file)
@@ -12,7 +12,8 @@ static char *rcsid_qrtn_qc = "$Header$";
 #include <mit-copyright.h>
 #include "query.h"
 #include "mr_server.h"
-EXEC SQL INCLUDE sqlca;
+EXEC SQL INCLUDE sqlca;  /* SQL Communications Area */
+EXEC SQL INCLUDE SQLDA;  /* SQL Descriptor Area */
 
 char *Argv[16];
 
@@ -794,29 +795,43 @@ char *table;
     EXEC SQL BEGIN DECLARE SECTION;
     char *name, *tbl, buf[257];
     int value;
+    char stmt_1_str[256];
     EXEC SQL END DECLARE SECTION;
 
+    EXEC SQL DECLARE stmt_1 STATEMENT;
+    EXEC SQL DECLARE cursor_1 CURSOR FOR stmt_1;
+
     name = object;
     tbl = table;
     EXEC SQL SELECT value INTO :value FROM values_tbl WHERE name=:name;
     if (sqlca.sqlcode < 0 || sqlca.sqlerrd[2] != 1)
       return(MR_NO_ID);
 
-    EXEC SQL SELECT :name INTO :buf FROM :tbl WHERE :name = :value;
+    sprintf(stmt_t_str, "SELECT %s INTO %s FROM %s WHERE %s = %d",
+           name, buf, tbl, name, value);
+
+    EXEC SQL PREPARE stmt_1 FROM :stmt_1_str;
+    EXEC SQL DESCRIBE stnt_1 INTO SQLDA;
+/*  EXEC SQL EXECUTE stmt_1;  -- wait on this use a cursor instead */
+
+    EXEC SQL OPEN cursor_1;
+    EXEC SQL FETCH cursor_1 USING DESCRIPTOR SQLDA;
     if (sqlca.sqlcode != 0 && sqlca.sqlcode != 100)
       return(MR_NO_ID);
 
-    while (sqlca.sqlerrd[2]) {
+    while (1) {
        value++;
        if (value > MAX_ID_VALUE)
            value = MIN_ID_VALUE;
-       EXEC SQL SELECT :name INTO :buf FROM :tbl WHERE :name = :value;
+        EXEC SQL FETCH cursor_1 USING DESCRIPTOR SQLDA;
        if (sqlca.sqlcode != 0 && sqlca.sqlcode != 100)
          return(MR_NO_ID);
     }
+    EXEC SQL CLOSE cursor_1;
 
     if (LOG_RES)
         com_err(whoami, 0, "setting ID %s to %d", name, value);
+
     EXEC SQL UPDATE values_tbl SET value = :value WHERE name = :name;
     if (sqlca.sqlcode != 0)
       return(MR_NO_ID);
This page took 0.14181 seconds and 5 git commands to generate.