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)