ralfhackmann
Goto Top

Informix SE Tabelle alle Felder auf NULL prüfen

Hallo,

ich muss bei mehreren Tabellen in einer Informix SE Datenbank alle Felder auf NULL prüfen.

Ich bin hierbei folgendermaßen vorgegangen:

Ermitteln der Tabellenspalten:
select_spalten.sql:
SELECT colname FROM syscolumns
WHERE tabid = ( SELECT tabid FROM systables WHERE tabname = "fyar1sta" )

dbaccess meinedb select_spalten.sql >> ar1_spalte.txt

select_ar1_NULL.awk:
#!/bin/awk -f
{printf "SELECT artikel, %s FROM fyar1sta WHERE %s is null;\n", $1, $1 }

./select_ar1_NULL.awk ar1_spalte.txt > select_ar1_NULL.sql

Die Datei select_ar1_NULL.sql enthält jetzt für jedes Feld aus fyar1sta eine Zeile mit einer Select Abfrage, die auf NULL prüft.


Meine Vorgehensweise funktioniert grundsätzlich, jedoch würde mich interessieren, wie man dies mit einer gespeicherten Prozedur in Informix SE realisiert, wobei ich keinerlei Erfahrung mit SPL habe.

Gruss

Ralf

Content-ID: 339846

Url: https://administrator.de/contentid/339846

Ausgedruckt am: 21.11.2024 um 18:11 Uhr

RalfHackmann
RalfHackmann 07.06.2017 um 14:28:09 Uhr
Goto Top
Ich mich zwischenzeitlich in SPL eingelesen und folgende Prozedur Procedure_pruefen_NULL.sql erstellt:
CREATE PROCEDURE pruefen_NULL (v_table_name CHAR(30))

    DEFINE v_column CHAR(30);

    FOREACH columns_cur FOR

        SELECT colname INTO v_culumn
        FROM syscolumns
        WHERE tabid = ( SELECT tabid
                        FROM systables
                        WHERE tabname = v_table_name );

        SELECT artikel, v_column
        FROM v_table_name
        WHERE CURRENT OF columns_cur
        AND v_column is null;

        UPDATE v_table_name
        SET v_column = ''  
        WHERE CURRENT OF columns_cur
        AND v_column is null;


    END FOREACH;

END PROCEDURE;

bei

dbaccess meinedb Procedure_pruefen_NULL.sql

kommt folgende Fehlermeldung:

Database selected.


  201: A syntax error has occurred.
Error in line 11
Near character position 54

Database closed.
133417
133417 07.06.2017 aktualisiert um 18:40:23 Uhr
Goto Top
Keine Ahnung von Informix , aber:
INTO v_culumn
Schreibfehler?

Gruß
RalfHackmann
RalfHackmann 08.06.2017 um 08:18:43 Uhr
Goto Top
Ich habe den Schreibfehler berichtigt, jedoch tritt der Syntaxfehler immer noch auf.
133417
133417 08.06.2017 aktualisiert um 10:08:15 Uhr
Goto Top
Dann häng dich rein, ein Meister fällt nicht vom Himmel, einfach dran bleiben.