- 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.
Bemerkung
Alternativ zum Aufrufen dieser Funktion können Sie das Schlüsselwort TABLE verwenden, wenn Sie einen Verweis auf ein Objekt erstellen müssen, das Sie nicht ändern möchten (z. B. wenn Sie eine Tabelle übergeben, die von der gespeicherten Prozedur abgefragt werden soll), und wenn Sie möchten, dass dieser Verweis nur für den Geltungsbereich des Aufrufs (und nicht für die gesamte Sitzung) gültig ist. Siehe Verwenden des Schlüsselworts TABLE, um einen Verweis auf eine Tabelle, Ansicht oder Abfrage zu erstellen.
- 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
compute_pool
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 das'reference_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 |