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)