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:

SYSTEM$QUERY_REFERENCE

Sintaxe

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

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

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 object_type não corresponder ao tipo do objeto especificado por object_identifier, a função falhará. Por exemplo, se o argumento object_type for TABLE, mas object_identifier for resolvido para um tipo de objeto diferente de TABLE (por exemplo, VIEW), a função falhará.

Solução

Verifique se o tipo do objeto especificado por object_identifier corresponde ao argumento object_type. Para obter uma lista de tipos de objetos compatíveis, consulte Tipos de objetos e privilégios suportados para referências.

Exemplos

Consulte Um exemplo simples.