Hallo,
ich habe folgendes Problem:
Ich habe eine Oracle 10g Datenbank, die in einer Tabelle ein CLOB Datenfeld enthält.
Nun existiert von der Oracle Datenbank aus eine Linked Server Verbindung auf eine SQL Server 2000 Datenbank. Dort existiert die gleiche Tabelle, mit einer Spalte vom Typ TEXT analog zur Spalte CLOB auf Oracle. Diese Spalte muss CLOB bzw. TEXT sein, da sie Texte mit einer Länge von über 4000 Zeichen enthält.
Wird nun in die Tabelle mit dem CLOB Feld ein neuer Datensatz eingefügt oder aktualisiert, dann sollen die Änderungen über einen Trigger (After Insert) auf die SQL Server Datenbank übertragen werden.
Und genau hier beginnt das Problem:
Wenn ich im Trigger sage:
INSERT INTO "TabelleXY"@SqlServerDB
(
Spalte1,
Spalte2,
ClobSpalte3
)
VALUES
(
:new.SPALTE1,
:new.SPALTE2,
:new.CLOB_SPALTE3
);
dann kann ich den Trigger nicht kompilieren, da :new.ClobSpalte3 nur ein LOB Locator (Pointer) ist und dieser logischer Weise nicht auf den SQL Server übertragen werden kann.
INSERT INTO "Tabelle_XY"@SqlServerDB
(
"Spalte1",
"Spalte2",
"ClobSpalte3"
)
SELECT
SPALTE1,
SPALTE2,
CLOB_SPALTE3
)
FROM TABELLE_XY
WHERE SPALTE1 = :new.SPALTE1;
funktioniert auch nicht, da der SELECT Teil dann anscheinend auf dem SQL Server ausgeführt wird und dieser nicht auf die Oracle Datenbank zugreifen kann.
Auch
INSERT INTO "Tabelle_XY"@SqlServerDB
(
"Spalte1",
"Spalte2",
"ClobSpalte3"
)
SELECT
:new.SPALTE1,
:new.SPALTE2,
:new.CLOB_SPALTE3
)
FROM DUAL;
geht nicht...
So langsam bin ich mit meinem Latein am Ende.
Hat evtl. schon mal jemand die gleiche Problematik gehabt und kann mir da weiter helfen?
Vielen Dank im Voraus
ich habe folgendes Problem:
Ich habe eine Oracle 10g Datenbank, die in einer Tabelle ein CLOB Datenfeld enthält.
Nun existiert von der Oracle Datenbank aus eine Linked Server Verbindung auf eine SQL Server 2000 Datenbank. Dort existiert die gleiche Tabelle, mit einer Spalte vom Typ TEXT analog zur Spalte CLOB auf Oracle. Diese Spalte muss CLOB bzw. TEXT sein, da sie Texte mit einer Länge von über 4000 Zeichen enthält.
Wird nun in die Tabelle mit dem CLOB Feld ein neuer Datensatz eingefügt oder aktualisiert, dann sollen die Änderungen über einen Trigger (After Insert) auf die SQL Server Datenbank übertragen werden.
Und genau hier beginnt das Problem:
Wenn ich im Trigger sage:
INSERT INTO "TabelleXY"@SqlServerDB
(
Spalte1,
Spalte2,
ClobSpalte3
)
VALUES
(
:new.SPALTE1,
:new.SPALTE2,
:new.CLOB_SPALTE3
);
dann kann ich den Trigger nicht kompilieren, da :new.ClobSpalte3 nur ein LOB Locator (Pointer) ist und dieser logischer Weise nicht auf den SQL Server übertragen werden kann.
INSERT INTO "Tabelle_XY"@SqlServerDB
(
"Spalte1",
"Spalte2",
"ClobSpalte3"
)
SELECT
SPALTE1,
SPALTE2,
CLOB_SPALTE3
)
FROM TABELLE_XY
WHERE SPALTE1 = :new.SPALTE1;
funktioniert auch nicht, da der SELECT Teil dann anscheinend auf dem SQL Server ausgeführt wird und dieser nicht auf die Oracle Datenbank zugreifen kann.
Auch
INSERT INTO "Tabelle_XY"@SqlServerDB
(
"Spalte1",
"Spalte2",
"ClobSpalte3"
)
SELECT
:new.SPALTE1,
:new.SPALTE2,
:new.CLOB_SPALTE3
)
FROM DUAL;
geht nicht...
So langsam bin ich mit meinem Latein am Ende.
Hat evtl. schon mal jemand die gleiche Problematik gehabt und kann mir da weiter helfen?
Vielen Dank im Voraus
Comment