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.

Nota

Como alternativa para chamar esta função, você pode usar a palavra-chave TABLE, se você precisar criar uma referência a um objeto que não planeja modificar (por exemplo, se estiver passando uma tabela que o procedimento armazenado consultará) e quiser que essa referência seja válida para o escopo da chamada (em vez de para a sessão inteira). Consulte Uso da palavra-chave TABLE para criar uma referência a uma tabela, exibição ou consulta.

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

  • compute_pool

  • 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 Contexto: o problema de passar tabelas, exibições e consultas para procedimentos armazenados.