SHOW errors SHOW errors CREATE OR REPLACE PROCEDURE synchronizuj AS UnhandledConflictOperation EXCEPTION; BEGIN LOCK TABLE source_log@alab11g IN EXCLUSIVE MODE; FOR confOper IN (SELECT id, s.operacja AS s, c.operacja AS c FROM source_log@alab11g s JOIN copy_log c USING(id)) LOOP CASE WHEN confOper.s = 'U' AND confOper.c = 'U' THEN UPDATE pracownicy_copy SET nazwisko = (SELECT nazwisko FROM pracownicy_source@alab11g WHERE id_prac = confOper.id), SET etat = (SELECT etat FROM apracownicy_source@alab11g WHERE id_prac = confOper.id_prac), SET id_szefa = (SELECT id_szefa FROM pracownicy_source@alab11g WHERE id_prac = confOper.id), SET nazwisko = (SELECT nazwisko FROM pracownicy_source@alab11g WHERE id_prac = confOper.id), SET zatrudniony = (SELECT zatrudniony FROM pracownicy_source@alab11g WHERE id_prac = confOper.id), SET placa_dod = (SELECT placa_dod FROM pracownicy_source@alab11g WHERE id_prac = confOper.id), SET placa_pod = (SELECT placa_pod FROM pracownicy_source@alab11g WHERE id_prac = confOper.id), SET id_zesp = (SELECT id_zesp FROM pracownicy_source@alab11g WHERE id_prac = confOper.id) WHERE id_prac = confOper.id; WHEN confOper.s = 'U' AND confOper.c = 'D' THEN DELETE FROM pracownicy_source@alab11g WHERE id_prac = confOper.id; WHEN confOper.s = 'D' THEN DELETE FROM pracownicy_copy WHERE id_prac = confOper.id; ELSE RAISE UnhandledConflictOperation; END CASE; END LOOP; --perform all non-conflict operations from Zrodlo -> Replika FOR noconf IN (SELECT * FROM pracownicy_source@alab11g WHERE id_prac NOT IN (SELECT id_prac FROM pracownicy_copy)) LOOP CASE WHEN noconf.operacja = 'I' THEN INSERT INTO pracownicy_copy SELECT * FROM pracownicy_source@alab11g WHERE id_prac = noconf.id; WHEN noconf.operacja = 'U' THEN UPDATE praconwicy_copy SET nazwisko = (SELECT nazwisko FROM pracownicy_source@alab11g WHERE id_prac = confOper.id), SET etat = (SELECT etat FROM pracownicy_source@alab11g WHERE id_prac = confOper.id), SET id_szefa = (SELECT id_szefa FROM pracownicy_source@alab11g WHERE id_prac = confOper.id), SET nazwisko = (SELECT nazwisko FROM pracownicy_source@alab11g WHERE id_prac = confOper.id), SET zatrudniony = (SELECT zatrudniony FROM pracownicy_source@alab11g WHERE id_prac = confOper.id), SET placa_dod = (SELECT placa_dod FROM pracownicy_source@alab11g WHERE id_prac = confOper.id), SET placa_pod = (SELECT placa_pod FROM pracownicy_source@alab11g WHERE id_prac = confOper.id), SET id_zesp = (SELECT id_zesp FROM pracownicy_source@alab11g WHERE id_prac = confOper.id) WHERE id_prac = noconf.id; WHEN noconf.operacja = 'D' THEN DELETE FROM pracownicy_copy WHERE id_prac = noconf.id; END CASE; END LOOP; --perform all non-conflict operations from Replika -> Zrodlo FOR noconf IN (SELECT id, operacja FROM copy_log WHERE id NOT IN (SELECT id FROM source_log@alab11g)) LOOP CASE WHEN noconf.operacja = 'I' THEN INSERT INTO pracownicy_source@alab11g SELECT * FROM pracownicy_copy WHERE id_prac = noconf.id; WHEN noconf.operacja = 'U' THEN UPDATE pracownicy_source@alab11g SET nazwisko = (SELECT nazwisko FROM pracownicy_copy WHERE id_prac = confOper.id), SET etat = (SELECT etat FROM pracownicy_copy WHERE id_prac = confOper.id), SET id_szefa = (SELECT id_szefa FROM pracownicy_copy WHERE id_prac = confOper.id), SET nazwisko = (SELECT nazwisko FROM pracownicy_copy WHERE id_prac = confOper.id), SET zatrudniony = (SELECT zatrudniony FROM pracownicy_copy WHERE id_prac = confOper.id), SET placa_dod = (SELECT placa_dod FROM pracownicy_copy WHERE id_prac = confOper.id), SET placa_pod = (SELECT placa_pod FROM pracownicy_copy WHERE id_prac = confOper.id), SET id_zesp = (SELECT id_zesp FROM pracownicy_copy WHERE id_prac = confOper.id) WHERE id_prac = noconf.id; WHEN noconf.operacja = 'D' THEN DELETE FROM pracownicy_source@alab11g WHERE id_prac = noconf.id; END CASE; END LOOP; DELETE FROM pracownicy_log@alab11g; DELETE FROM copy_log; END; /
bledy:
12/8 PL/SQL: SQL Statement ignored
13/103 PL/SQL: ORA-01747: invalid user.table.column, table.column, or co lumn specification
41/9 PL/SQL: SQL Statement ignored
43/104 PL/SQL: ORA-01747: invalid user.table.column, table.column, or co lumn specification
67/9 PL/SQL: SQL Statement ignored
70/94 PL/SQL: ORA-01747: invalid user.table.column, table.column, or co lumn specification