Hallo,
ich möchte eine SQL Prozedur erstellen, welche Folgendes tuen soll.
Ich habe zwei Spalten: SUPPLIER_NAME, SUPPLIER_ADDRESS
SUPPLIER_NAME = Name der Lieferanten gespeichert (es gibt auch Zeilen, welche keine Name eingetragen ist, aber die Lieferantenadressen ist immer eingetragen.
SUPPLIER_ADDRESS = Adresse der Lieferanten gespeicher.
Ich möchte mit eine Prozedur, die leere Zeilen in SUPPLIER_NAME finden,
nachdem ich es gefunden habe, nehme ich die dazugehörige Lieferantenadresse und möchte mit den anderen Lieferantenadressen vergleichen.
Bei eine Übereinstimmung, nehme ich das SUPPLIER_NAME von der übereinstimmten SUPPLIER_ADDRESS und schreibe die in die leere SUPPLIER_NAME.
Ich hoffe, ich habe mich verständlich ausgedruckt.
Dazu habe ich folgende Code erstellt.
CREATE OR REPLACE PROCEDURE SEARCH_AND_FILL_IN (TABLE_SUPPLIER IS TABLE OF VARCHAR2 INDEX BY BINARY_INTEGER, TABLE_SUPPLIER_ADDRESS IS TABLE OF VARCHAR2 INDEX BY BINARY_INTEGER) IS
INDEX_SUPPLIER BINARY_INTEGER;
INDEX_SUPPLIER_ADDRESS BINARY_INTEGER;
ROW TABLE_SUPPLIER%ROWTYPE;
BEGIN
INDEX_SUPPLIER := 1
INDEX_SUPPLIER_ADDRESS :=1
FOR EACH ROW IN TABLE_SUPPLIER LOOP
IF TABLE_SUPPLIER(INDEX_SUPPLIER) IS NULL THEN
FOR EACH ROW IN TABLE_SUPPLIER_ADDRESS LOOP
IF TABLE_SUPPLIER_ADRESS(INDEX_SUPPLIER_ADDRESS) IS TABLE_SUPPLIER(INDEX_SUPPLIER) THEN
UPDATE TABLE_SUPPLIER SET TABLE_SUPPLIER(INDEX_SUPPLIER) = TABLE_SUPPLIER(INDEX_SUPPLIER_ADDRESS);
ELSE
INDEX_SUPPLIER_ADDRESS := INDEX_SUPPLIER_ADDRESS + 1;
END IF;
END LOOP;
INDEX_SUPPLIER_ADDRESS := 1;
END IF;
INDEX_SUPPLIER := INDEX_SUPPLIER +1;
END LOOP;
END;
Wenn ich es ausführe bekomme ich folgende Meldung:
FUNCTION AMI_CHAR2NUMBER kompiliert
Errors: check compiler log
die dazugehörige compiler log
Projekt: sqldev.temp:/IdeConnections%23Ebis1.jpr
C:\Users\Hasan H. Gümüs\AppData\Roaming\SQL Developer\EbisBereinigung.sql
Fehler(1,46): PLS-00103: Encountered the symbol "IS" when expecting one of the following: in out <an identifier> <a double-quoted delimited-identifier> ... long double ref char time timestamp interval date binary national character nchar
Fehler(1,90): PLS-00103: Encountered the symbol "," when expecting one of the following: . ( @ % ; not null range alter character
Wenn ich danach meine Prozedure mit folgende Zeile ausführe:
EXECUTE SEARCH_AND_FILL_IN(STAGE2_PURCHASES.SUPPLIER, STAGE2_PURCHASES.SUPPLIER_ADDRESS);
Bekomme ich folgende Meldung:
Fehler beim Start in Zeile 200 in Befehl:
EXECUTE SEARCH_AND_FILL_IN(STAGE2_PURCHASES.SUPPLIER, STAGE2_PURCHASES.SUPPLIER_ADDRESS)
Fehlerbericht:
ORA-06550: line 1, column 43:
PLS-00357: Table,View Or Sequence reference 'STAGE2_PURCHASES.SUPPLIER' not allowed in this context
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
und die dazugehörige Compiler log zieht folgendermaßen aus:
Projekt: sqldev.temp:/IdeConnections%23Ebis1.jpr
C:\Users\Hasan H. Gümüs\AppData\Roaming\SQL Developer\EbisBereinigung.sql
Fehler(15,1): PLS-00103: Encountered the symbol "UPDATE"
Könnt ihr mir hierbei helfen?
Was habe ich denn bei meine Prozedur falsch gemacht?
Vielen Dank im Voraus
Gruss
Hasan