SnowConvert AI – Oracle – Rowid-Datentyp¶
Beschreibung¶
Jede Zeile in der Datenbank enthält eine Adresse. (Oracle SQL-Sprachreferenz – Rowid-Datentypen)
ROWID-DataType¶
Beschreibung¶
Die Zeilen in Heap-organisierten Tabellen, die in der Oracle-Datenbank nativ sind, haben Zeilenadressen, die Rowids genannt werden. Sie können eine Rowid-Zeilenadresse untersuchen, indem Sie die Pseudospalte ROWID abfragen. Die Werte dieser Pseudospalte sind Zeichenfolgen, die die Adresse der einzelnen Zeilen darstellen. Diese Zeichenfolgen haben den Datentyp ROWID. Sie können auch Tabellen und Cluster erstellen, die tatsächliche Spalten mit dem Datentyp ROWID enthalten. (Oracle SQL Language Reference ROWID Data Types)
Beispielhafte Quellcode-Muster¶
ROWID in Create Table¶
Oracle¶
Snowflake¶
Daten in die ROWID-Spalte einfügen¶
Es ist möglich, Daten in ROWID-Spalten einzufügen, wenn die Einfügung eine gültige ROWID hat, wie im folgenden Beispiel gezeigt. Leider ist der Abruf von ROWID aus einer Tabelle nicht erlaubt.
Oracle¶
Ergebnis¶
ROWID_COLUMN |
|---|
AAATtCAAMAAAADLABD |
Snowflake¶
Ergebnis¶
ROWID_COLUMN |
|---|
AAATtCAAMAAAADLABD |
Bekannte Probleme¶
Bemerkung
Da die Ergebnismenge zu groß ist, wurde die Zeilenbegrenzungsklausel hinzugefügt. Sie können diese Klausel entfernen, um die Ergebnismenge abzurufen.
1. Abrufen von ROWID aus einer Tabelle, die keine explizite Spalte mit diesem Datentyp hat
Wie im Snowflake-Forum erwähnt, wird ROWID nicht von Snowflake unterstützt. Die folgende Abfrage zeigt einen Fehler in Snowflake an, da die Spalte hr.employees keine ROWID enthält.
Oracle¶
Ergebnis¶
ROWID |
|---|
AAATtCAAMAAAADLABD |
AAATtCAAMAAAADLABV |
AAATtCAAMAAAADLABX |
AAATtCAAMAAAADLAAv |
AAATtCAAMAAAADLAAV |
AAATtCAAMAAAADLAAD |
AAATtCAAMAAAADLABL |
AAATtCAAMAAAADLAAP |
AAATtCAAMAAAADLAA6 |
AAATtCAAMAAAADLABg |
Snowflake¶
Ergebnis¶
Gefahr
SQL-Kompilierungsfehler: ungültiger Bezeichner „ROWID“
UROWID-Datentyp¶
Beschreibung¶
Oracle verwendet universelle Rowids (Urowids), um die Adressen von Index-organisierten und fremden Tabellen zu speichern. Index-organisierte Tabellen haben logische Urowids und fremde Tabellen haben fremde Urowids. (Oracle SQL Language Reference UROWID Data Type)
Beispielhafte Quellcode-Muster¶
UROWID in Create Table¶
Oracle¶
Snowflake¶
Daten in die UROWID-Spalte einfügen¶
So wie bei ROWID ist es möglich, Daten in UROWID-Spalten einzufügen, wenn die Einfügung eine gültige UROWID hat, aber das Abrufen aus einer Tabelle nicht zulässig ist.
Oracle¶
Ergebnis¶
UROWID_COLUMN |
UROWID_SIZED_COLUMN |
|---|---|
*BAMAAJMCVUv+ |
*BAMAAJMCVUv+ |
Snowflake** SSC-FDM-0007 - MISSING DEPENDENT OBJECT „urowid_table“ **¶
Ergebnis¶
UROWID_COLUMN |
UROWID_SIZED_COLUMN |
|---|---|
*BAMAAJMCVUv+ |
*BAMAAJMCVUv+ |
Bekannte Probleme¶
Bemerkung
Da die Ergebnismenge zu groß ist, wurde die Zeilenbegrenzungsklausel hinzugefügt. Sie können diese Klausel entfernen, um die Ergebnismenge abzurufen.
1. Abrufen von UROWID aus einer Tabelle, die keine explizite Spalte mit diesem Datentyp hat
Die folgende Abfrage zeigt einen Fehler in Snowflake an, da hr.countries keine Spalte ROWID enthält (wie in der Oracle-Dokumentation erwähnt, UROWID wird mit der Anweisung SELECT … ROWID aufgerufen).
Oracle¶
Ergebnis¶
ROWID |
COUNTRY_NAME |
|---|---|
*BAMAAJMCQVL+ |
Argentinien |
*BAMAAJMCQVX+ |
Australien |
*BAMAAJMCQkX+ |
Belgien |
*BAMAAJMCQlL+ |
Brasilien |
*BAMAAJMCQ0H+ |
Kanada |
*BAMAAJMCQ0j+ |
Schweiz |
*BAMAAJMCQ07+ |
China |
*BAMAAJMCREX+ |
Deutschland |
*BAMAAJMCREv+ |
Dänemark |
*BAMAAJMCRUf+ |
Ägypten |
Snowflake¶
Ergebnis¶
Gefahr
SQL-Kompilierungsfehler: ungültiger Bezeichner „ROWID“
2. EWI should be displayed by SnowConvert AI¶
EWI sollte angezeigt werden, wenn Sie versuchen, eine UROWID-Spalte auszuwählen. Es gibt ein Work-Element, um den entsprechenden EWI hinzuzufügen.
Gefahr
Dieses Problem wurde als kritisch gekennzeichnet und wird in den kommenden Releases behoben.
Zugehörige EWIs¶
SSC-EWI-0036: Datentyp, der in einen anderen Datentyp konvertiert wurde.
SSC-FDM-OR0030: ROWID-Pseudospalte wird in Snowflake nicht unterstützt.