Moeki Geschrieben 3. November 2006 Geschrieben 3. November 2006 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.
mme Geschrieben 6. November 2006 Geschrieben 6. November 2006 ...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...???
Moeki Geschrieben 7. November 2006 Autor Geschrieben 7. November 2006 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.
Moeki Geschrieben 7. November 2006 Autor Geschrieben 7. November 2006 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; /
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden