]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
*** empty log message ***
authorhades <hades>
Wed, 23 Aug 2000 12:32:10 +0000 (12:32 +0000)
committerhades <hades>
Wed, 23 Aug 2000 12:32:10 +0000 (12:32 +0000)
allParam/ora/oraParam.h
allParam/ora/oraParam.pc

index 9b4afe8060af03a755a27e7fc74e40f2dacd6861..ec00b4255dd4abe0d14d3106544cf75f7413d270 100644 (file)
@@ -5,6 +5,9 @@
  * Section containing struct Param (different in the different param.h's) *
  **************************************************************************/
 
+#define PARAM_MAX_NAME_LEN 128
+#define PARAM_MAX_NVALS 1024
+
 typedef struct ParamS {
        char *strerror;
 } Param;
index 79f0e0dcb80b1666107285c1d5c06fcd13b8ae3b..9b8187151a0e37a02467fb3b2b746b7f3cd18531 100644 (file)
@@ -31,20 +31,77 @@ int Param_getString(const Param *my, const char *name, const char *idx, int *row
 
 int Param_getIntArray(const Param *my, const char *name, const char *idx, int maxrows, int *rows, unsigned long int *val)
 {
+       int retVal;
        int i;
-       for (i = 0 ; i < maxrows ; i++) {
-               val[i] = 0;
+       char *endptr;
+       EXEC SQL BEGIN DECLARE SECTION;
+       char value[PARAM_MAX_VALUE_LEN][PARAM_MAX_NVALS];
+       char sqlname[PARAM_MAX_NAME_LEN];
+       char sqlidx[PARAM_MAX_NAME_LEN];
+       EXEC SQL END DECLARE SECTION;
+       strcpy(sqlname, name);
+       strcpy(sqlidx, idx);
+       EXEC SQL WHENEVER SQLERROR DO Param_strerror(my, "Some Oracle error occured.\n");
+       EXEC SQL SELECT VALUE INTO :value FROM daq.params WHERE NAME = :sqlname AND IDX = :sqlidx ORDER BY SEQ_NUM;
+       *rows = sqlca.sqlerrd[2];
+
+       if (*rows > maxrows) {
+               Param_strerror(my, "Result has to many rows. Returning only 'maxrows' rows.\n");
+               for (i = 0 ; i < maxrows ; i++) {
+                       val[i] = strtoul(value[i], &endptr, NULL);
+                       if(*endptr != '\0') {
+                               Param_strerror(my, "Value seems to be no integer.\n");
+                               retVal = -1;
+                       }
+               }
+               retVal = -1;
+       } else {
+               for (i = 0 ; i < *rows ; i++) {
+                       val[i] = strtoul(value[i], &endptr, NULL);
+                       if(*endptr != '\0') {
+                               Param_strerror(my, "Value seems to be no integer.\n");
+                               retVal = -1;
+                       }
+               }
+               for (i = *rows ; i < maxrows ; i++) {
+                       val[i] = 0;
+               }
        }
-       return 0;
+               retVal = 0;
 }
 
 int Param_getStringArray(const Param *my, const char *name, const char *idx, int maxrows, int *rows, char **val)
 {
+       int retVal;
        int i;
-       for (i = 0 ; i < maxrows ; i++) {
-               val[i] = "Blub";
+       EXEC SQL BEGIN DECLARE SECTION;
+       char value[PARAM_MAX_VALUE_LEN][PARAM_MAX_NVALS];
+       char sqlname[PARAM_MAX_NAME_LEN];
+       char sqlidx[PARAM_MAX_NAME_LEN];
+       EXEC SQL END DECLARE SECTION;
+       strcpy(sqlname, name);
+       strcpy(sqlidx, idx);
+       EXEC SQL WHENEVER SQLERROR DO Param_strerror(my, "Some Oracle error occured.\n");
+       EXEC SQL SELECT VALUE INTO :value FROM daq.params WHERE NAME = :sqlname AND IDX = :sqlidx ORDER BY SEQ_NUM;
+       *rows = sqlca.sqlerrd[2];
+
+       if (*rows > maxrows) {
+               Param_strerror(my, "Result has to many rows. Returning only 'maxrows' rows.\n");
+               for (i = 0 ; i < maxrows ; i++) {
+                       strcpy(val[i], value[i]);
+               }
+               retVal = -1;
+       } else {
+               for (i = 0 ; i < *rows ; i++) {
+                       strcpy(val[i], value[i]);
+               }
+               for (i = *rows ; i < maxrows ; i++) {
+                       val[i] = NULL;
+               }
+               retVal = 0;
        }
-       return 0;
+
+       return retVal;
 }
 
 const char *Param_getErrStr(const Param *my)