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:

SYSTEM$QUERY_REFERENCE

Syntax

SYSTEM$REFERENCE('<object_type>', '<object_identifier>',
  [ , <reference_scope> [ , '<privilege>' [ , '<privilege>' ... ] ] ] )
Copy

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 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'));
Copy

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 object_type-Argument nicht mit dem Typ des Objekts übereinstimmt, das durch object_identifier angegeben wird, schlägt die Funktion fehl. Wenn beispielsweise das Argument object_type den Wert TABLE ist, aber object_identifier einen anderen Objekttyp als TABLE ergibt (z. B. VIEW), schlägt die Funktion fehl.

Lösung

Überprüfen Sie, ob der Typ des durch object_identifier angegebenen Objekts mit dem Argument object_type übereinstimmt. Eine Liste der unterstützten Objekttypen finden Sie unter Unterstützte Objekttypen und Berechtigungen für Referenzen.

Beispiele

Siehe Ein einfaches Beispiel.