Große Objekte (LOBs)
Der Begriff großes Objekt und das generische Akronym LOB beziehen sich auf den Datentyp BLOB, CLOB oder DBCLOB. In einer Unicode-Datenbank kann NCLOB als Synonym für DBCLOB verwendet werden.
LOB-Werte unterliegen Einschränkungen, wie in Zeichenfolgen mit variabler Längebeschrieben. Diese Einschränkungen gelten auch dann, wenn das Längenattribut der LOB-Zeichenfolge 254 Byte oder weniger beträgt.
LOB-Werte können sehr groß sein und die Übertragung dieser Werte vom Datenbankserver an Hostvariablen des Clientanwendungsprogramms kann zeitaufwendig sein. Da Anwendungsprogramme in der Regel LOB-Werte einzeln und nicht als Ganzes verarbeiten, können Anwendungen mithilfe eines Large Object Locator auf einen LOB-Wert verweisen.
Ein Large Object Locatoroder LOB-Locator ist eine Hostvariable, deren Wert einen einzelnen LOB-Wert auf dem Datenbankserver darstellt.
Ein Anwendungsprogramm kann einen LOB-Wert in einem LOB-Querverweis auswählen. Anschließend kann das Anwendungsprogramm mithilfe des LOB-Lokators Datenbankoperationen für den LOB-Wert anfordern (z. B. Anwenden der Skalarfunktionen SUBSTR, CONCAT, VALUE oder LENGTH, Ausführen einer Zuweisung, Durchsuchen des LOB mit LIKE oder POSSTR oder Anwenden benutzerdefinierter Funktionen auf den LOB), indem es den Lokatorwert als Eingabe bereitstellt. Die resultierende Ausgabe (Daten, die einer Client-Host-Variablen zugeordnet sind) wäre normalerweise eine kleine Untergruppe des Eingabe-LOB-Werts.
SUBSTR(lob_value_1 CONCAT lob_value_2 CONCAT lob_value_3, 42, 6000000)Wenn ein Nullwert in eine normale Hostvariable ausgewählt wird, wird die Indikatorvariable auf -1 gesetzt, was bedeutet, dass der Wert null ist. Im Fall von LOB-Locators ist die Bedeutung von Indikatorvariablen jedoch geringfügig unterschiedlich. Da eine Locator-Host-Variable selbst nie null sein kann, gibt ein negativer Indikatorvariablenwert an, dass der durch den LOB-Querverweis dargestellte LOB-Wert null ist. Die Nullinformationen werden aufgrund des Indikatorvariablenwerts lokal für den Client gehalten-der Server verfolgt keine Nullwerte mit gültigen Locators.Es ist wichtig zu verstehen, dass ein LOB-Querverweis einen Wert darstellt, nicht eine Zeile oder eine Position in der Datenbank. Sobald ein Wert in einem Locator ausgewählt wurde, kann keine Operation für die ursprüngliche Zeile oder Tabelle ausgeführt werden, die sich auf den Wert auswirkt, auf den der Locator verweist. Der Wert, der einem Locator zugeordnet ist, ist gültig, bis die Transaktion endet oder bis der Locator explizit freigegeben wird, je nachdem, was zuerst eintritt. Locators erzwingen keine zusätzlichen Kopien der Daten, um diese Funktion bereitzustellen. Stattdessen speichert der Locator-Mechanismus eine Beschreibung des LOB-Basiswerts. Die Materialisierung des LOB-Werts (oder Ausdrucks, wie oben gezeigt) wird verzögert, bis er tatsächlich einer Position zugeordnet wird-entweder einem Benutzerpuffer in Form einer Hostvariablen oder einem anderen Datensatz in der Datenbank.
Ein LOB-Querverweis ist nur ein Mechanismus, der verwendet wird, um während einer Transaktion auf einen LOB-Wert zu verweisen; er bleibt nicht über die Transaktion hinaus bestehen, in der er erstellt wurde. Es handelt sich nicht um einen Datenbanktyp; er wird nie in der Datenbank gespeichert und kann daher nicht an Sichten oder Prüfungen auf Integritätsbedingungen teilnehmen. Da ein LOB-Querverweis jedoch eine Clientdarstellung eines LOB-Typs ist, gibt es SQLTYPEs für LOB-Querverweise, sodass sie innerhalb einer SQLDA-Struktur beschrieben werden können, die von FETCH-, OPEN-oder EXECUTE-Anweisungen verwendet wird.