- Categorias:
Funções do sistema (Informação)
SYSTEM$REFERENCE¶
Retorna uma referência a um objeto (uma tabela, exibição ou função). Quando você executa ações de SQL em uma referência a um objeto, as ações são executadas usando a função do usuário que criou a referência.
- Consulte também:
Sintaxe¶
SYSTEM$REFERENCE('<object_type>', '<object_identifier>',
[ , <reference_scope> [ , '<privilege>' [ , '<privilege>' ... ] ] ] )
Argumentos¶
Obrigatório
object_type
Tipo do objeto. Especifique um dos seguintes valores:
api_integration
database
external_table
function
materialized_view
pipe
procedure
schema
table
task
view
warehouse
object_identifier
Identificador do objeto. Se o identificador contiver espaços ou caracteres especiais, toda a cadeia de caracteres deverá ser delimitada por aspas duplas. Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.
Para obter mais detalhes sobre os identificadores de, consulte Requisitos para identificadores.
Opcional
reference_scope
Especifica o escopo da referência.
Se for
CALL
ou omitido, especifica que a referência é válida dentro do contexto em que foi criada. Consulte Especificação do escopo da referência.Se
SESSION
, especifica que a referência deve ser válida durante a sessão.Se
PERSISTENT
, especifica que a referência deve ser válida até que o objeto seja descartado. Consulte referências persistentes.Nota: se você precisar especificar o argumento
privilege
, o argumentoreference_scope
será necessário.Valores válidos:
CALL
SESSION
PERSISTENT
Valor padrão:
CALL
privilege
Privilégio adicional necessário para realizar uma ação de SQL no objeto.
Por exemplo, suponha que você esteja passando a referência de uma tabela para um procedimento armazenado que insere linhas nessa tabela. Especifique
'INSERT'
para conferir o privilégio INSERT nessa tabela para o procedimento armazenado.Para obter uma lista de objetos e privilégios compatíveis, consulte Tipos de objetos e privilégios suportados para referências.
Para especificar mais de um privilégio adicional, passe cada nome de privilégio como um argumento adicional para a função. Por exemplo, para conferir os privilégios INSERT, UPDATE e TRUNCATE:
CALL myprocedure( SYSTEM$REFERENCE('TABLE', 'table_with_different_owner', 'SESSION', 'INSERT'. 'UPDATE', 'TRUNCATE'));
Note que você não pode especificar OWNERSHIP ou ALL como privilégios.
Retornos¶
Uma representação de cadeia de caracteres serializada da referência que pode ser usada como um identificador.
Notas de uso¶
O argumento object_type
deve corresponder ao tipo do objeto especificado por object_identifier
.
Solução de problemas¶
Os cenários a seguir podem ajudar você a solucionar problemas que podem ocorrer.
Erro |
505028 (42601): Object type <object_type> does not match the specified type <type_of_the_specified_object> for reference creation
|
---|---|
Causa |
Se você tentar criar uma referência usando a função SYSTEM$REFERENCE e o argumento |
Solução |
Verifique se o tipo do objeto especificado por |
Exemplos¶
Consulte Um exemplo simples.