Usar um procedimento armazenado

Procedimento armazenado é uma sub-rotina disponível para aplicativos que acessam um sistema de banco de dados relacional. Ao se conectar a um banco de dados SAP Sybase ASE, Microsoft SQL Server ou Teradata usando o Tableau, você pode usar um procedimento armazenado para definir a conexão.

Para Oracle, você pode usar uma função de tabela para definir a conexão. As funções de tabela do Oracle funcionam da mesma forma que os procedimentos armazenados e são listadas em Procedimentos armazenados na página Fonte de dados.

Quando você cria uma fonte de dados usando um desses tipos de dados, os procedimentos disponíveis são listados em Procedimentos armazenados, conforme mostrado no exemplo do Microsoft SQL Server:

No painel esquerdo, arraste o procedimento até a tela ou clique duas vezes em um dos procedimentos listados. Se os parâmetros estiverem disponíveis no procedimento, a caixa de diálogo Parâmetros será exibida automaticamente: 

Em vez de inserir um valor, você pode usar um parâmetro do Tableau existente ou criar um novo parâmetro do Tableau para o valor:

Em seguida, caso você exponha o parâmetro do Tableau na exibição, os usuários conseguem alterar o valor do parâmetro no procedimento interativamente.

Os procedimentos armazenados não são compatíveis com federação, relações ou uniões de colunas. São representados em uma única tabela lógica da camada lógica e não permitem abrir a tela União de linhas/colunas (camada física).

Observações sobre procedimentos armazenados

Caso você use procedimentos armazenados para definir uma fonte de dados para o Tableau, tenha o seguinte em mente:

  • Caso um procedimento armazenado retorne mais de um conjunto de resultados, o Tableau lê o primeiro e ignora o restante.

  • Caso um procedimento armazenado tenha parâmetros de saída, o Tableau filtra o procedimento armazenado.

  • Os procedimentos armazenados com parâmetros de um tipo não escalar são excluídos.

  • As colunas do conjunto de resultados sem tipos correspondentes no Tableau (como varbinary, geometry e hierarchyid) são registrados. Se todas as colunas do conjunto de resultados forem mapeadas para tipos de dados desconhecidos, o Tableau exibirá uma mensagem:

    "O conjunto de resultados... não tem colunas utilizáveis".

  • Os procedimentos armazenados que não retornam conjuntos de resultados são listados na página da fonte de dados, mas falha em caso de seleção.

  • Caso nenhum valor seja fornecido para um parâmetro exigido pelo procedimento armazenado, ocorre um erro. O Tableau não pode determinar antecipadamente se os parâmetros são obrigatórios.

  • O Tableau não realiza nenhum gerenciamento de transação para procedimentos armazenados. Ou seja, escritores de procedimentos armazenados não devem depender do Tableau para iniciar transações antes de invocar procedimentos armazenados ou de confirmá-los depois.

  • Os nomes das colunas devem ser exclusivos para os procedimentos armazenados funcionarem. Se duas colunas tiverem o mesmo nome, ou se nenhum nome for fornecido, o procedimento poderá resultar em um erro.

  • Se houver várias consultas em um procedimento armazenado (por exemplo, para ler valores de outra tabela ou para manter combinações temporárias), cada consulta deverá retornar os mesmos conjuntos de colunas na mesma ordem (mesmos nomes e tipos de dados). Para garantir que a ordem e os nomes das colunas coincidam nos resultados da consulta, talvez seja necessário executar CAST para verificar se o tipo de dados está correto, por exemplo CAST(Username as VARCHAR(20)), e nomear explicitamente as colunas. Se um procedimento armazenado não seguir essas diretrizes, uma mensagem de erro poderá ser gerada:

    "InsertData: erro de coluna não associada"

  • Se houver várias consultas em um procedimento armazenado (por exemplo, para ler valores de outra tabela ou para manter combinações temporárias) e o procedimento estiver gerando um erro, tente adicionar SET NOCOUNT ON ao início do procedimento. Isso impede que a mensagem que mostra o número de linhas afetadas por uma instrução Transact-SQL seja retornada como parte do conjunto de resultados de uma consulta.

Além disso, as restrições a seguir aplicam-se a bancos de dados específicos.

Restrições de procedimento armazenado para bancos de dados Teradata

As restrições a seguir aplicam-se a procedimentos armazenados em bancos de dados Teradata.

  • Os valores devem ser fornecidos para cada parâmetro. Caso o usuário não forneça um valor para um ou mais parâmetros, o Tableau exibe um erro de banco de dados Teradata informando que existem poucos valores fornecidos para o procedimento armazenado.

Restrições de procedimento armazenado para bancos de dados SQL Server

As restrições a seguir aplicam-se a procedimentos armazenados em bancos de dados SQL Server.

  • Se o conjunto de resultados de um procedimento armazenado contiver colunas do tipo IMAGEM ou TEXTO, o procedimento armazenamento apresentará uma falha com uma mensagem de erro "Sintaxe incorreta" .

  • Caso a largura total do conjunto de resultados (número de bytes em cada linha) exceda 8060, o procedimento armazenado falha. Isso pode ocorrer com tabelas bem amplas (centenas de colunas) ou com tabelas com colunas de texto grandes, destinadas a manter milhares de caracteres de texto.

  • O Tableau não exibe procedimentos armazenados do esquema "sys".

  • Se o usuário não fornecer um valor para um ou mais parâmetros exigidos pelo procedimento, o Tableau exibirá um erro no banco de dados SQL Server no formulário "O procedimento exige um valor para o parâmetro @x, mas nenhum foi fornecido".

  • Os procedimentos armazenados que contêm várias consultas devem seguir as diretrizes listadas em Observações sobre procedimentos armazenados (acima).

  • O Tableau Desktop não aceita o tipo de dados TIME do Microsoft SQL Server. Quando encontra campos desse tipo inclusos em um procedimento armazenado em um banco de dados do Microsoft SQL Server, o Tableau Desktop não os importará.

Restrições de procedimento armazenado para bancos de dados ASE SAP Sybase

As restrições a seguir aplicam-se a procedimentos armazenados em bancos de dados SAP Sybase ASE (Windows apenas).

  • O banco de dados deve ter um servidor remoto configurado corretamente.

  • Se o usuário não fornecer um valor para um ou mais parâmetros exigidos pelo procedimento, o Tableau exibirá um erro no banco de dados do Sybase ASE no formulário "O procedimento exige um valor para o parâmetro @x, mas nenhum foi fornecido".

Agradecemos seu feedback!