- Catégories :
Fonctions système (informations)
SYSTEM$REFERENCE¶
Renvoie une référence à un objet (une table, une vue ou une fonction). Lorsque vous exécutez des actions SQL sur une référence à un objet, les actions sont effectuées en utilisant le rôle de l’utilisateur qui a créé la référence.
- Voir aussi :
Syntaxe¶
SYSTEM$REFERENCE('<object_type>', '<object_identifier>',
[ , <reference_scope> [ , '<privilege>' [ , '<privilege>' ... ] ] ] )
Arguments¶
Nécessaire
object_type
Type de l’objet. Vous pouvez spécifier l’une des valeurs suivantes :
api_integration
database
external_table
function
materialized_view
pipe
procedure
schema
table
task
view
warehouse
object_identifier
Identificateur de l’objet. Si l’identificateur contient des espaces ou des caractères spéciaux, toute la chaîne doit être délimitée par des guillemets doubles. Les identificateurs entre guillemets doubles sont également sensibles à la casse.
Pour plus de détails sur les identificateurs, voir Exigences relatives à l’identificateur.
Facultatif
reference_scope
Spécifie le champ d’application de la référence.
Si
CALL
ou omis, spécifique que la référence est valable dans le contexte dans lequel elle a été créée. Voir Précision du champ d’application de la référence.Si
SESSION
, spécifie que la référence doit être valable pour la durée de la session.Si
PERSISTENT
, spécifie que la référence doit être valide jusqu’à ce que l’objet soit supprimé. Voir les références persistantes.Note : si vous devez spécifier l’argument
privilege
, l’argumentreference_scope
est requis.Valeurs valides :
CALL
SESSION
PERSISTENT
Valeur par défaut :
CALL
privilege
Privilège supplémentaire nécessaire pour exécuter une action SQL sur l’objet.
Par exemple, supposons que vous transmettiez la référence d’une table à une procédure stockée qui insère des lignes dans cette table. Spécifiez
'INSERT'
pour conférer à la procédure stockée le privilège INSERT sur cette table.Pour une liste des objets et privilèges pris en charge, consultez Types d’objets pris en charge et privilèges pour les références.
Pour spécifier plus d’un privilège supplémentaire, transmettez chaque nom de privilège en tant qu’argument supplémentaire à la fonction. Par exemple, pour conférer les privilèges INSERT, UPDATE, et TRUNCATE :
CALL myprocedure( SYSTEM$REFERENCE('TABLE', 'table_with_different_owner', 'SESSION', 'INSERT'. 'UPDATE', 'TRUNCATE'));
Notez que vous ne pouvez pas spécifier OWNERSHIP ou ALL comme privilèges.
Renvoie¶
Une représentation sous forme de chaîne sérialisée de la référence qui peut être utilisée comme identificateur.
Notes sur l’utilisation¶
L’argument object_type
doit correspondre au type de l’objet spécifié par object_identifier
.
Dépannage¶
Les scénarios suivants peuvent vous aider à résoudre les problèmes qui peuvent survenir.
Erreur |
505028 (42601): Object type <object_type> does not match the specified type <type_of_the_specified_object> for reference creation
|
---|---|
Cause |
Si vous essayez de créer une référence à l’aide de la fonction SYSTEM$REFERENCE et que l’argument |
Solution |
Vérifiez que le type de l’objet spécifié par |
Exemples¶
Voir Un exemple simple.