DBEXECUTEFIXED
DBEXECUTEFIXED é uma alternativa a DBEXECUTE com suporte para parâmetros. Ao contrário de DBEXECUTE, é possível usá-lo em ambientes de nuvem e locais, além de aplicativos personalizados ou estendidos.
A instrução SQL é tratada como texto fixo, portanto, não pode fazer referência direta a variáveis.
Se a instrução estiver em uma célula desprotegida, você poderá atualizar o valor que ela retorna, porém, ao contrário do que ocorre com DBEXECUTE, não poderá adicionar linhas.
Nomes de parâmetro diferenciam maiúsculas de minúsculas.
Sintaxe
A fórmula DBEXECUTEFIXED tem estes parâmetros.
- Alias: especifica a conexão de dados relacional definida em d/EPM Administration.
- Selecionar instrução: usado para recuperar dados do banco de dados. É um comando SELECT SQL padrão. Para habilitar o banco de dados a ser atualizado, a consulta deve incluir a chave primária. A SQL SELECT pode retornar diversos valores de uma linha, mas DBEXECUTEFIXED ignora todos, exceto o primeiro. Por isso, para retornar e fazer write-back de um valor que não é a chave primária, verifique se a chave primária não é o primeiro valor solicitado pela instrução. Para write-back, a célula que contém a consulta deve estar protegida.
- Valores do parâmetro: É possível usar parâmetros de valor simples e de valores múltiplos. Em instruções SQL, consulte parâmetros de valor único com
@[parameter_name]
. Faça referência a parâmetros de valores múltiplos com@@[nome_do_processo]
. Os valores em parâmetros de valores múltiplos devem ser separados pelo caractere pipe(|)
.
=DBEXECUTEFIXED("alias", "select_statement", {, "parameter"})
Os nomes de parâmetros são automaticamente atribuídos como p1, p2 etc.
Exemplo
Neste exemplo, a fórmula retorna o nome do item em que o ID tem o valor atualmente mantido na variável de relatório rv_configs. items.ID
é a chave primária.
=DBEXECUTEFIXED("configdb", "SELECT items.name,items.ID FROM items WHERE Id=@p1",ReportVariables.rv_configs.Text)
items.id
é a chave primária. Se a fórmula estiver em uma célula desprotegida e retornar um valor, será possível atualizar o valor: neste exemplo, o nome do item.
Como toda a instrução SQL é tratada como texto, não há nenhum requisito para concatenar os valores de string com o caractere &
; como é necessário nas seguintes fórmulas DBEXECUTE:
=DBEXECUTE("configdb", "SELECT items.name,items.ID FROM items WHERE Id="&ReportVariables.rv_configs.Text)
=DBEXECUTE("configdb", "SELECT items.ID,items.name FROM items WHERE name='"&ReportVariables.rv_name.Text&"'")
A sintaxe da concatenação difere porque, no primeiro exemplo, o valor referenciado é numérico e o segundo é de texto.