Zum Inhalt springen

Operationen auf Cursor


Moeki

Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

...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...???

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen


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;


/

:)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...