Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PL/SQL błędy
Forum PHP.pl > Forum > Bazy danych > Oracle
luke_skywalker
  1. SHOW errors
  2. SHOW errors
  3. CREATE OR REPLACE PROCEDURE synchronizuj AS UnhandledConflictOperation EXCEPTION;
  4. BEGIN LOCK TABLE source_log@alab11g IN EXCLUSIVE MODE;
  5.  
  6. FOR confOper IN (SELECT id, s.operacja AS s, c.operacja AS c
  7. FROM source_log@alab11g s JOIN copy_log c USING(id))
  8. LOOP
  9. CASE
  10. WHEN confOper.s = 'U' AND confOper.c = 'U' THEN
  11. UPDATE pracownicy_copy
  12. SET nazwisko = (SELECT nazwisko FROM pracownicy_source@alab11g WHERE id_prac = confOper.id),
  13. SET etat = (SELECT etat FROM apracownicy_source@alab11g WHERE id_prac = confOper.id_prac),
  14. SET id_szefa = (SELECT id_szefa FROM pracownicy_source@alab11g WHERE id_prac = confOper.id),
  15. SET nazwisko = (SELECT nazwisko FROM pracownicy_source@alab11g WHERE id_prac = confOper.id),
  16. SET zatrudniony = (SELECT zatrudniony FROM pracownicy_source@alab11g WHERE id_prac = confOper.id),
  17. SET placa_dod = (SELECT placa_dod FROM pracownicy_source@alab11g WHERE id_prac = confOper.id),
  18. SET placa_pod = (SELECT placa_pod FROM pracownicy_source@alab11g WHERE id_prac = confOper.id),
  19. SET id_zesp = (SELECT id_zesp FROM pracownicy_source@alab11g WHERE id_prac = confOper.id)
  20.  
  21.  
  22. WHERE id_prac = confOper.id;
  23. WHEN confOper.s = 'U' AND confOper.c = 'D' THEN
  24. DELETE FROM pracownicy_source@alab11g WHERE id_prac = confOper.id;
  25. WHEN confOper.s = 'D' THEN
  26. DELETE FROM pracownicy_copy WHERE id_prac = confOper.id;
  27. ELSE
  28. RAISE UnhandledConflictOperation;
  29. END CASE;
  30. END LOOP;
  31.  
  32. --perform all non-conflict operations from Zrodlo -> Replika
  33. FOR noconf IN (SELECT * FROM pracownicy_source@alab11g WHERE id_prac NOT IN (SELECT id_prac FROM pracownicy_copy)) LOOP
  34. CASE
  35. WHEN noconf.operacja = 'I' THEN
  36. INSERT INTO pracownicy_copy SELECT *
  37. FROM pracownicy_source@alab11g WHERE id_prac = noconf.id;
  38.  
  39. WHEN noconf.operacja = 'U' THEN
  40. UPDATE praconwicy_copy
  41.  
  42. SET nazwisko = (SELECT nazwisko FROM pracownicy_source@alab11g WHERE id_prac = confOper.id),
  43. SET etat = (SELECT etat FROM pracownicy_source@alab11g WHERE id_prac = confOper.id),
  44. SET id_szefa = (SELECT id_szefa FROM pracownicy_source@alab11g WHERE id_prac = confOper.id),
  45. SET nazwisko = (SELECT nazwisko FROM pracownicy_source@alab11g WHERE id_prac = confOper.id),
  46. SET zatrudniony = (SELECT zatrudniony FROM pracownicy_source@alab11g WHERE id_prac = confOper.id),
  47. SET placa_dod = (SELECT placa_dod FROM pracownicy_source@alab11g WHERE id_prac = confOper.id),
  48. SET placa_pod = (SELECT placa_pod FROM pracownicy_source@alab11g WHERE id_prac = confOper.id),
  49. SET id_zesp = (SELECT id_zesp FROM pracownicy_source@alab11g WHERE id_prac = confOper.id)
  50.  
  51. WHERE id_prac = noconf.id;
  52.  
  53. WHEN noconf.operacja = 'D' THEN
  54. DELETE FROM pracownicy_copy WHERE id_prac = noconf.id;
  55. END CASE;
  56. END LOOP;
  57.  
  58. --perform all non-conflict operations from Replika -> Zrodlo
  59. FOR noconf IN (SELECT id, operacja FROM copy_log WHERE id NOT IN (SELECT id FROM source_log@alab11g)) LOOP
  60. CASE
  61. WHEN noconf.operacja = 'I' THEN
  62. INSERT INTO pracownicy_source@alab11g SELECT *
  63. FROM pracownicy_copy WHERE id_prac = noconf.id;
  64.  
  65. WHEN noconf.operacja = 'U' THEN
  66. UPDATE pracownicy_source@alab11g
  67.  
  68.  
  69. SET nazwisko = (SELECT nazwisko FROM pracownicy_copy WHERE id_prac = confOper.id),
  70. SET etat = (SELECT etat FROM pracownicy_copy WHERE id_prac = confOper.id),
  71. SET id_szefa = (SELECT id_szefa FROM pracownicy_copy WHERE id_prac = confOper.id),
  72. SET nazwisko = (SELECT nazwisko FROM pracownicy_copy WHERE id_prac = confOper.id),
  73. SET zatrudniony = (SELECT zatrudniony FROM pracownicy_copy WHERE id_prac = confOper.id),
  74. SET placa_dod = (SELECT placa_dod FROM pracownicy_copy WHERE id_prac = confOper.id),
  75. SET placa_pod = (SELECT placa_pod FROM pracownicy_copy WHERE id_prac = confOper.id),
  76. SET id_zesp = (SELECT id_zesp FROM pracownicy_copy WHERE id_prac = confOper.id)
  77.  
  78.  
  79.  
  80. WHERE id_prac = noconf.id;
  81.  
  82. WHEN noconf.operacja = 'D' THEN
  83. DELETE FROM pracownicy_source@alab11g WHERE id_prac = noconf.id;
  84. END CASE;
  85. END LOOP;
  86.  
  87. DELETE FROM pracownicy_log@alab11g; DELETE FROM copy_log; END;
  88. /




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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.