- Kategorien:
Systemfunktionen (Informationen)
SYSTEM$REFERENCE¶
Gibt eine Referenz auf ein Objekt (Tabelle, Ansicht oder Funktion) zurück. Wenn Sie SQL-Aktionen auf einer Objektreferenz ausführen, werden die Aktionen mit der Rolle des Benutzers ausgeführt, der die Referenz erstellt hat.
- Siehe auch:
Syntax¶
SYSTEM$REFERENCE('<object_type>', '<object_identifier>',
[ , <reference_scope> [ , '<privilege>' [ , '<privilege>' ... ] ] ] )
Argumente¶
Erforderlich
object_type
Typ des Objekts. Sie können einen der folgenden Werte angeben:
api_integration
database
external_table
function
materialized_view
pipe
procedure
schema
table
task
view
warehouse
object_identifier
Bezeichner für das Objekt. Wenn der Bezeichner Leerzeichen oder Sonderzeichen enthält, muss die gesamte Zeichenfolge in doppelte Anführungszeichen gesetzt werden. Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.
Weitere Informationen zu Bezeichnern finden Sie unter Anforderungen an Bezeichner.
Optional
reference_scope
Gibt den Geltungsbereich der Referenz an.
Bei
CALL
oder bei Weggelassen wird angegeben, dass die Referenz in dem Kontext gültig, in dem sie erstellt wurde. Siehe Angeben des Geltungsbereichs der Referenz.SESSION
gibt an, dass die Referenz für die Dauer der Sitzung gültig sein soll.Bei
PERSISTENT
wird angegeben, dass der Verweis gültig sein soll, bis das Objekt gelöscht wird. Siehe persistente Referenzen.Hinweis: Wenn Sie das
privilege
-Argument angeben müssen, ist auch dasreference_scope
-Argument erforderlich.Gültige Werte:
CALL
SESSION
PERSISTENT
Standardwert:
CALL
privilege
Zusätzliche Berechtigung die erforderlich ist, um eine SQL-Aktion auf dem Objekt auszuführen.
Angenommen, Sie übergeben den Verweis auf eine Tabelle an eine gespeicherte Prozedur, mit der Zeilen in diese Tabelle eingefügt werden. Geben Sie
'INSERT'
an, um der gespeicherten Prozedur die Berechtigung INSERT für diese Tabelle zu erteilen.Eine Liste der unterstützten Objekte und Berechtigungen finden Sie unter Unterstützte Objekttypen und Berechtigungen für Referenzen.
Wenn Sie mehr als eine zusätzliche Berechtigung angeben möchten, übergeben Sie jeden Berechtigungsnamen als zusätzliches Argument an die Funktion. So erteilen Sie beispielsweise die Berechtigungen INSERT, UPDATE und TRUNCATE:
CALL myprocedure( SYSTEM$REFERENCE('TABLE', 'table_with_different_owner', 'SESSION', 'INSERT'. 'UPDATE', 'TRUNCATE'));
Beachten Sie, dass Sie OWNERSHIP oder ALL nicht als Berechtigungen angeben können.
Rückgabewerte¶
Eine serialisierte Zeichenfolgendarstellung der Referenz, die als Bezeichner verwendet werden kann.
Nutzungshinweise¶
Das Argument object_type
muss mit Typ des Objekts übereinstimmen, das durch object_identifier
angegebenen wurde.
Problembehandlung¶
Die folgenden Szenarios können Ihnen helfen, möglicherweise auftretende Probleme zu beheben.
Fehler |
505028 (42601): Object type <object_type> does not match the specified type <type_of_the_specified_object> for reference creation
|
---|---|
Ursache |
Wenn Sie versuchen, einen Verweis mit der Funktion SYSTEM$REFERENCE zu erstellen, und das |
Lösung |
Überprüfen Sie, ob der Typ des durch |
Beispiele¶
Siehe Ein einfaches Beispiel.