Compartilhar via


Acessar dados no SQL Server

Adicionar fonte de dados

Acesso direto:

Se você selecionar a opção Iniciar com dados ao criar um aplicativo, a propriedade Itens da galeria usará uma fórmula do Power Fx com um nome de fonte de dados que aponta diretamente para a tabela de banco de dados.

Por exemplo, se você tiver uma BOOKLENDING tabela, verá esta fórmula:

Search([@'[dbo].[BOOKLENDING]'], SearchInput1.Text, author, author,book_name,category)

Exibições e procedimentos armazenados:

Um padrão comum de acesso a dados profissionais é usar exibições e procedimentos armazenados para criar, atualizar e excluir em vez de permitir acesso direto. Se você quiser usar exibições ou procedimentos armazenados, altere a fórmula de exemplo. Da mesma forma, o formulário para o registro não usa a abordagem direta interna da SubmitForm() fórmula.

Gatilhos:

Um padrão de banco de dados é usar gatilhos em tabelas. Se uma tabela tiver um gatilho, você não poderá usar o padrão Submit() direto para criar, atualizar e excluir. Submit() entra em conflito com o tratamento de gatilhos SQL e o comportamento interno do Power Apps, que usam o mesmo parâmetro de saída.

Você pode acessar diretamente a tabela para consultas, mas para manipular Create, Updateou Deletechamar um procedimento armazenado.

Observação

O conector do SQL Server, como todos os conectores que funcionam com dados relacionais, pressupõe que as tabelas tenham uma chave primária. Uma chave primária é fundamental para localizar registros específicos a serem atualizados. Se uma tabela do SQL Server não tiver uma chave primária, os dados serão somente leitura. Se você tiver direitos de acesso e edição para a tabela SQL Server, considere adicionar uma chave gerada automaticamente.

Usar uma exibição

Uma exibição é uma consulta salva que é mostrada como uma única tabela de dados.

As exibições aparecem na lista de tabelas que você pode selecionar ao adicionar uma fonte de dados. As exibições oferecem suporte apenas a consultas – não a atualizações. Para atualizar dados, use um procedimento armazenado.

Se você criar uma tabela com a opção Start with data , obterá telas e fórmulas que mostram registros em uma galeria e formulário. Você vê fórmulas e funcionalidades para criar, editar e excluir registros. Porém, se você usar uma exibição, verá apenas uma tela de exibição para a galeria e o formulário.

Talvez você queira telas Start with data geradas automaticamente para exibições.

Para usar essa opção gerada automaticamente:

  1. Escolha Start with data com uma tabela básica.
  2. Exclua e substitua a fonte de dados da tabela.

Exemplo:

Por exemplo, se você tiver uma BOOKLENDINGVIEW tabela e adicioná-la como uma fonte de dados para o Power Apps, a fórmula poderá ser tão simples quanto:

BOOKLENDINGVIEW

Você também pode substituir outras fórmulas de criação, atualização e exclusão por uma fonte de dados de exibição e chamadas para procedimentos armazenados.

Usar procedimentos armazenados

Ao adicionar uma conexão SQL Server ao seu aplicativo, você pode adicionar procedimentos armazenados e chamá-los diretamente no Power Fx.

Observação

Esse recurso também funciona com conexões implícitas seguras.

Captura de tela que mostra listas de tabelas, exibições e procedimentos armazenados disponíveis para serem adicionados ao seu aplicativo.

Depois de selecionar um procedimento armazenado, um nó filho será exibido e você poderá designar o procedimento armazenado como Seguro para uso em galerias e tabelas.

Um procedimento armazenado será seguro se ele não executar nenhuma ação que possa ser indesejada em determinados cenários. Por exemplo, se um procedimento armazenado coletar todas as contas de uma determinada cidade e, em seguida, enviar-lhes um email, talvez você nem sempre queira que emails sejam enviados sempre que o procedimento armazenado for chamado. Nesse caso, não marque o procedimento armazenado como seguro.

Marque um procedimento armazenado como seguro somente se:

  1. Não houver efeitos colaterais em chamar esse procedimento sob demanda.

    Você pode chamar o procedimento várias vezes ou sempre que o Power Apps atualizar o controle. Quando você o usa com uma propriedade Items de uma galeria ou tabela, o Power Apps chama o procedimento armazenado sempre que o sistema determina que uma atualização é necessária. Não for possível controlar quando o procedimento armazenado é chamado.

  2. O procedimento armazenado retorna uma quantidade modesta de dados.

    Chamadas de ação, como procedimentos armazenados, não têm um limite no número de linhas recuperadas. Eles não são automaticamente paginados em incrementos de 100 registros, como fontes de dados tabulares, como tabelas ou exibições.

    Se o procedimento armazenado retornar muitos dados (muitos milhares de registros), seu aplicativo poderá diminuir ou falhar. Por motivos de desempenho, traga menos de 2.000 registros.

Se você verificar um procedimento armazenado como seguro, poderá atribuí-lo como uma propriedade Items em galerias ou tabelas em seu aplicativo.

Importante

O esquema dos valores de retorno do procedimento armazenado deve ser estático, para que os valores não sejam alterados de chamada para chamada. Por exemplo, se um procedimento armazenado retornar duas tabelas, ele sempre retornará duas tabelas. Você pode trabalhar com resultados específicos ou dinâmicos.

A estrutura dos resultados também precisa ser estática. Por exemplo, se o esquema dos resultados for dinâmico, os resultados serão dinâmicos e você deverá fornecer um tipo específico para usá-los no Power Apps. Para obter mais informações, consulte os resultados dinâmicos.

Namespace SQL anexado ao nome do procedimento armazenado

O nome do namespace do SQL Server, no qual você armazena o procedimento, é adicionado ao início do nome do procedimento armazenado. Por exemplo, todos os procedimentos armazenados no namespace do SQL Server 'DBO' têm 'dbo' no início do nome.

Por exemplo, quando você adiciona um procedimento armazenado, pode ver mais de uma fonte de dados em seu projeto.

Captura de tela que mostra fontes de dados SQL.

Chamada de um procedimento armazenado

Para usar um procedimento armazenado no Power Apps, adicione o nome do conector antes do nome do procedimento armazenado, como Paruntimedb.dbonewlibrarybook.

Observação

Quando o Power Apps traz o procedimento armazenado, ele combina o namespace e o nome do procedimento para que isso dbo.newlibrarybook se torne dbonewlibrarybook.

Os argumentos são passados como um registro do Power Apps com pares de valores nomeados:

<datasourceName>.<StoredprocedureName>({<paramName1: value, paramName2: value, ... >})

Dica

Converta valores, se necessário, conforme você os passa para o procedimento armazenado, já que você está lendo de um valor de texto no Power Apps. Por exemplo, se você estiver atualizando um inteiro no SQL, converta o texto no campo usando Value().

Aqui está um exemplo de como os procedimentos armazenados podem ficar ao atribuí-los a uma propriedade OnSelect.

Captura de tela que mostra como chamar procedimentos armazenados diretamente usando pares chave/valor e notação de ponto.

Variáveis e todos os procedimentos armazenados

Acesse um procedimento armazenado para a propriedade Items de uma galeria depois de declará-lo seguro para a interface do usuário. Referencie o nome da fonte de dados e o nome do procedimento armazenado seguido de ResultSets. Acesse vários resultados fazendo referência ao conjunto de tabelas retornadas, como Tabela 1, Tabela 2 e assim por diante.

Por exemplo, um procedimento armazenado da tabela Paruntimedb com o nome dbo.spo_show_all_library_books() tem esta aparência:

Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1

Esta consulta popula a galeria com registros. No entanto, os procedimentos armazenados são comportamentos de ação no modelo tabular. Refresh() funciona apenas com fontes de dados tabulares e não funciona com procedimentos armazenados. Atualize a galeria quando um registro for criado, atualizado ou excluído.

Observação

Quando você usa um Submit() em um formulário para uma fonte de dados tabular, ele efetivamente chama Refresh() nos bastidores e atualiza a galeria.

Use uma variável na OnVisible propriedade da tela e defina o procedimento armazenado como a variável.

Set(SP_Books, Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1);

Você pode acabar definindo a propriedade Items da galeria como o nome da variável.

SP_Books

Depois de criar, atualizar ou excluir um registro com uma chamada para o procedimento armazenado, defina a variável novamente para atualizar a galeria.

Paruntimedb.dbonewlibrarybook({   
  book_name: DataCardValue3_2.Text, 
  author: DataCardValue1_2.Text,
    ...
});
Set(SP_Books, Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1);

Usar o Power Automate para chamar procedimentos armazenados

O Power Automate lida melhor com ações assíncronas. Chame procedimentos armazenados como parte de uma série de chamadas em um processo de negócios.

Para chamar o Power Automate e chamar procedimentos armazenados, crie variáveis de entrada como parte do fluxo.

Captura de tela que mostra a entrada do Power Automate.

Em seguida, passe suas variáveis de entrada para a chamada do procedimento armazenado.

Executar procedimento armazenado

Adicione esse fluxo do Power Automate ao seu aplicativo e chame-o. Passar argumentos opcionais como um registro "{ ... }". O exemplo a seguir inclui todos os argumentos opcionais.

Fluxo do Power Automate