AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

unknown ISC error 0

Ein Thema von Artur · begonnen am 17. Nov 2013 · letzter Beitrag vom 17. Nov 2013
Antwort Antwort
Artur

Registriert seit: 31. Dez 2006
Ort: Augsburg
70 Beiträge
 
Delphi XE8 Enterprise
 
#1

unknown ISC error 0

  Alt 17. Nov 2013, 11:31
Datenbank: Firebird • Version: 2.5.2 • Zugriff über: FIBplus
Moin zusammen

ich bastele an einer Replikation herum. Das Ding läuft so, dass jeder Datensatz eine eindeutige ID hat und ein Datum, wann der Datensatz geändert wurde (wird über einen Trigger automatisch geändert).

Der Datenabgleich läuft (ab dem zweiten Mal) so ab:
Über Selects filtere ich, welche Datensätze ein neues Datum gegenüber dem letzten Abgleich haben (Änderung), welche Datensätze in der Tabelle aber nicht in der Historie sind (neuer Datensatz) und welche in der Historie, aber nicht mehr in der Tabelle sind (wurde gelöscht).
Das trage ich dann in eine "Hilfstabelle" ein, die zwischen Client-PC und Server-PC hi- und her kopiert wird. Wenn die nötigen Schritte feststehen, kopiere bzw. lösche ich die Datensätze entsprechend.

Das Ganze klappt soweit relativ gut, aber der Abgleich über Internet ist eher langsam (weil die Hilfstabelle Datensatz für Datensatz kopiert wird). Also bin ich auf die Idee gekommen, diese Hilfstabelle nicht datensatzweise zu kopieren, sondern 15 Datensätze in einen Block zu tun und den dann zu kopieren. Dafür baue ich mir gerade einen Block zusammen, an den ich die Tabelle übergebe, die er zusammenpacken soll. Das Script dazu funktionierte soweit auch einwandfrei, hatte aber noch den Namen der Hilfstabelle und der Zieltabelle festcodiert.

Nachdem ich mehrere Hilfstabellen habe, habe ich den Block in einen String q_stmt ausgelagert und füge die Tabellennamen der Hilfstabelle und der Zieltabelle vor dem Aufruf von Execute Statement ein.

Leider bringt mir das Skript dann in IBExpert zweimal "unknown ISC error 0." und anschließend, wie viele Datensätze in die zweite Tabelle eingefügt wurde (es klappt also einwandfrei). Hat dazu jemand einen Tipp?

Das Ganze schaut derzeit so aus:


Code:
execute block (rep_tn varchar(30) = :rep_tn, pack_tn VARCHAR(30) = :pack_tn)
as
  DECLARE VARIABLE q_stmt VARCHAR(1200);
begin

  q_stmt =

  'execute block as ' ||

  ' DECLARE VARIABLE stmt VARCHAR(1200); ' ||
  ' DECLARE VARIABLE i smallint; ' ||
  ' DECLARE VARIABLE r_guid do_guid; ' ||
  ' DECLARE VARIABLE r_chgd do_zeitstempel; ' ||
  ' DECLARE VARIABLE r_svr_act do_dbaction; ' ||
  ' DECLARE VARIABLE r_clnt_act do_dbaction; ' ||
  ' DECLARE VARIABLE r_tablename varchar(30); ' ||
  ' DECLARE VARIABLE lf char(2); ' ||
  ' DECLARE VARIABLE a_guid do_guid; ' ||

  ' begin ' ||

  ' stmt = ''''; ' ||
  ' i = 0; ' ||
  ' lf = ASCII_CHAR(13)||ASCII_CHAR(10); ' ||

  ' for ' ||
  '  select r.db_guid, r.db_changed_at, r.db_action_svr, r.db_action_clnt ' ||
--    from rp$_1098_angebot r
  '  from ' || :rep_tn ||' r ' ||
  ' into :r_guid, :r_chgd, :r_svr_act, :r_clnt_act ' ||
  ' do ' ||
  ' begin ' ||
  '  stmt = stmt || '''''''' || :r_guid || '''''','''''' || :r_chgd || '''''','''''' ' ||
  '             || :r_svr_act || '''''','''''' || :r_clnt_act ||  '''''''' || lf; ' ||
  ' i = i +1; ' ||
  ' if (i > 15) then ' ||
  ' begin ' ||
  '   i = 0; ' ||
  '   insert into ' || :pack_tn || ' ( db_guid, blockdata ) ' ||
  '     values ( gen_id(gen_db_guid, 1), :stmt ); ' ||
  '   stmt = ''''; ' ||
  ' end ' ||
  ' end ' ||
  ' if (stmt <> '''' ) then ' ||
  ' begin ' ||
  ' insert into ' || :pack_tn || ' ( db_guid, blockdata ) ' ||
  '   values ( gen_id(gen_db_guid, 1), :stmt ); ' ||
  ' end end';

  execute statement q_stmt;

end
Danke vorab für alle Tipps.

Viele Grüße,

Artur
Artur
  Mit Zitat antworten Zitat
Artur

Registriert seit: 31. Dez 2006
Ort: Augsburg
70 Beiträge
 
Delphi XE8 Enterprise
 
#2

AW: unknown ISC error 0

  Alt 17. Nov 2013, 11:45
Sorry,

vergesst die Frage bitte: Mir ist beim Testen ein paar mal der Debugger im IB Expert abgestürzt und da war wohl noch was im Speicher...
Nach einem Neustart ist der Fehler jetzt weg...

Schönen Sonntag!
Artur
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz