- 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.
Note
Au lieu d’appeler cette fonction, vous pouvez utiliser le mot-clé TABLE si vous avez besoin de créer une référence à un objet que vous n’envisagez pas de modifier (par exemple, si vous transmettez une table que la procédure stockée interrogera) et si vous souhaitez que la référence soit valide pour le champ d’application de l’appel (plutôt que pour l’ensemble de la session). Voir Utilisation du mot-clé TABLE pour créer une référence à une table, une vue ou une requête.
- 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
compute_pool
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’argument'reference_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
.
Résolution des problèmes¶
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 Contexte : problème de transmission de tables, de vues et de requêtes à des procédures stockées.