Reading time: 1 minute
Olá, no post de hoje iremos aprender como executar stored procedure com TCSPExec no ADVPL. Stored procedure são um conjunto de comandos SQL que podemos criar e armazenar no banco de dados para serem executadas a qualquer momento por programas externos. Em um exemplo mais objetivo, stored procedure são funções que criamos que contém comandos SQL e assim podemos chamar essas funções para execução desses comandos SQL.
No nosso exemplo nesse post a função TCSPExec em ADVPL executa uma stored procedure definida. Ela é uma das funções de acesso a banco de dados em ADVPL.
Sintaxe:
TCSPExec(cProcedure,xParamN)
Parâmetro(s):
Retorno:
Abaixo criamos uma stored procedure chamada BUSCA_TABPROTHEUS e o parâmetro chamado tabela, esse parâmetro que iremos passar para a procedure para que a mesma execute a instrução SQL SELECT * FROM SX3990 WHERE X3_ARQUIVO = @Tabela e assim no retornar a tabela do Protheus na SX3:
CREATE PROCEDURE BUSCA_TABPROTHEUS
@Tabela VARCHAR(3)
AS
SELECT * FROM SX3990 WHERE X3_ARQUIVO = @Tabela
Exemplo em ADVPL:
#include 'protheus.ch'
#include "tbiconn.ch"
/*{Protheus.doc} User Function fTCSPExec
(Essa função tem por finalidade mostrar a função de Acesso a Banco de Dados TCSPExec em ADVPL)
@type Function
@author Adilio Costa
@since 20/10/2023
@version Protheus 12.1.2210
@site https://www.protheusadvpl.com.br
@canal https://www.youtube.com/protheusadvpl
@instagram https://www.instagram.com/protheusadvpl
@Portal ProtheusAdvpl:https://hotmart.com/pt-br/marketplace/produtos/portal-protheusadvpl/O10336806O
@Post:Como Executar Stored Procedure com TCSPExec no ADVPL
*/
User Function fTCSPExec()
Local cProcedure := "BUSCA_TABPROTHEUS"
Local cParam1 := "SA1"
Local aRet := {}
Local nI
//Executa a Stored Procedure
aRet := TCSPExec(cProcedure,cParam1)
If(aRet <> nil)
For nI := 1 To Len(aRet)
conout(aRet[nI])
Next nI
Else
Conout('Erro na execução da Stored Procedure: ' + TcSqlError() )
Endif
Return
Bem, finalizamos mais um post aqui no blog. Espero que você tenha entendido, qualquer dúvida nos envie um e-mail para adiliocosta@protheusadvpl.com.br. Grande abraço e fica com Deus.
Links de referência(s):