Der SESAM/SQL CLI-Aufruf SQL_BLOB_OBJ_CLONE erzeugt einen Klon eines existierenden BLOB-Objekts in einer anderen Datenbank. Der Klon hat denselben REF-Wert wie das Original und wird in einer BLOB-Tabelle mit demselben Schemanamen und Tabellennamen erzeugt wie das Original. Die Attribute des Klons werden gemäß den Defaultwerten seiner BLOB-Tabelle gesetzt. Sein BLOB-Wert hat die Länge 0.
Den Aufruf SQL_BLOB_OBJ_CLONE können Sie zur Replikation einer BLOB-Tabelle in einer anderen Datenbank verwenden. Bisher war das mit erneutem Ausführen von SQL_BLOB_OBJ_CREATE auf der anderen Datenbank möglich. Dies hatte aber den Nachteil, dass sich unterschiedliche REF-Werte für Original und kopiertes Objekt ergeben, so dass die Referenzen in beiden Datenbanken unterschiedlich sind. Mit dem Aufruf SQL_BLOB_OBJ_CLONE kann man einen Klon mit demselben REF-Wert erzeugen, so dass die Referenzen in beiden Datenbanken gleich bleiben.
Mit SQL_BLOB_OBJ_CLONE können Sie auch ein versehentlich gelöschtes BLOB-Objekt wieder erzeugen.
CLI-Deklaration in C:
#define SQL_BLOB_OBJ_CLONE SQLBOCL extern void SQL_BLOB_OBJ_CLONE( char const *REFvalue /* in */ ,char const *CatalogId /* in */ ,SQLda_t *sqlda); /* out */
CLI-Deklaration in Cobol:
IDENTIFICATION DIVISION. PROGRAM-ID. SQLbocl IS PROTOTYPE. DATA DIVISION. LINKAGE SECTION. 01 REFvalue PIC X(237). 01 CatalogId PIC X(31). COPY SQLCA. PROCEDURE DIVISION USING REFvalue, CatalogId, SQLda. END PROGRAM SQLbocl.
REFValue
Der eingegebene REFValue
muss ein korrekter REF-Wert sein, und er darf kein Klassenobjekt bezeichnen. Die durch REFvalue
bezeichnete BLOB-Tabelle muss in der angegebenen Datenbank existieren. Sie darf das mit REFvalue
referenzierte BLOB-Objekt nicht enthalten.Nach erfolgreichem Aufruf referenziert der ausgegebene REFvalue
ein neues BLOB-Objekt in der Datenbank CatalogId
. Der BLOB-Wert hat die Länge 0. Die Attribute CREATED und UPDATED enthalten denselben Timestamp, und andere Attribute haben den Default-Wert aus der BLOB-Tabelle.
CatalogID
Name der Datenbank mit der neuen BLOB-Tabelle. CatalogID
ist ein einfacher Name (siehe Abschnitt „Einfache Namen"). Der Name muss gegebenenfalls mit Leerzeichen auf 31 Zeichen verlängert oder mit einem Null-Byte abgeschlossen werden. Soll der Name der voreingestellten Datenbank verwendet werden, so müssen Sie statt des Datenbanknamens ein Null-Byte, ein oder mehrere Leerzeichen angeben.