Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo.

Gegeben sei eine Tabelle PKW, in der unter dem Attribut PKZ verschiedene PKW-Kennzeichen gespeichert sind. Ich möchte mir alle gültigen Kennzeichen aus meinem Landkreis XYZ ausgeben lassen. Und zwar in Form eines Cursors.

Bis jetzt kann ich in meinem SQL Skript nur für definierte Variablen (wort varchar2(30) := 'XYZ';) per IF Abfrage prüfen, ob das Kennzeichen gültig ist. Kann ich IF Abfragen auf Cursor laufen lassen, muss ich Cursor in Variablen "umdefinieren" oder empfiehlt ihr mir sonstige Vorgehensweisen (String Abfragen im Cursor, usw.)?

Z.b: CURSOR XYZ (pkz IN varchar) IS

select PKZ from PKW where (left,3)pkz = XYZ and ...;

Gruß,

Marko.

Geschrieben
...Kann ich IF Abfragen auf Cursor laufen lassen, muss ich Cursor in Variablen "umdefinieren" ...

Ist das eine Frage oder eine Festellung?

Was willst du machen in welchem System, welche Umgebung, welche Version.... ????

Ich kann mir das bildlich nicht richtig vorstellen, wie eine IF-Abfrage auf einem Cursor läuft...???

Geschrieben

Hat sich erledigt.


set serveroutput on


DECLARE


cursor	pkz_cursor is

select pkz from auto where substr(pkz,1,3) = 'LOS';


wort		varchar2(30);


BEGIN


OPEN pkz_cursor;


LOOP

	FETCH pkz_cursor INTO wort;

	EXIT WHEN pkz_cursor%NOTFOUND;

	dbms_output.put_line(wort);

END LOOP;


CLOSE pkz_cursor;


END;


/

Ich muss jetzt nur noch auf den Wörtern prüfen, ob sie kennzeichenkonform sind. Ne andere Möglichkeit, als über IF Abfragen fällt mir nicht ein.

Gruß,

Moeki.

Geschrieben


set serveroutput on


DECLARE


cursor  pkz_cursor is

select pkz from auto where substr(pkz,1,3) = 'LOS';


wort            varchar2(30);

akt_zustand     varchar2(10):= 'korrekt';

n               number;


BEGIN


OPEN pkz_cursor;

<<auessere_Schleife>>

LOOP

        FETCH pkz_cursor INTO wort;

        EXIT auessere_Schleife WHEN pkz_cursor%NOTFOUND;

        dbms_output.put_line(wort);


        IF (ascii(substr(wort, 4, 1)) = 32) THEN

                akt_zustand := 'korrekt';

        ELSE

                akt_zustand := 'falsch';

        END IF;


        FOR n IN REVERSE 6..length(wort) LOOP

        EXIT WHEN akt_zustand = 'falsch';

        IF (((ascii(substr(wort, n , 1)) >=65) AND (ascii(substr(wort, n , 1)) <=90)) AND ((ascii(substr(wort, n-1 , 1)) >=48) AND (ascii(substr(wort, n-1 ,

1)) <=57))) THEN

                akt_zustand := 'falsch';

        END IF;

        END LOOP;


        IF (akt_zustand = 'korrekt') THEN

                dbms_output.put_line('Kennzeichen ist korrekt!');

        ELSE

                dbms_output.put_line('Kennzeichen ist falsch!');

        END IF;

END LOOP auessere_schleife;


CLOSE pkz_cursor;


END;


/

:)

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...