- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Funções AdvPL
- função TCSPEXEC executar uma stored procedure
Perguntas função TCSPEXEC executar uma stored procedure
- CCASKWD
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 114
- Obrigados Recebidos: 0
9 anos 3 meses atrás #28881
por CCASKWD
função TCSPEXEC executar uma stored procedure foi criado por CCASKWD
Olá Pessoal, tudo bem?
Alguém poderia dar alguma dica, de como eu posso executar uma stored procedure no sql server 2008 R2, e passando os parâmetros através do Protheus usando a função TCSPEXEC.
Problema: No meu SQL, tenho a base de dados DADOSADV, que é a populada pelo Protheus, e tenho outra base de dados INTERNET, que é fora do Protheus, onde pertence a stored procedure “ECOM_ATUALIZA”, criei também a stored procedure “ECOM_ATUALIZA”, na base de dados DADOSADV, e dentro dela e faço a referência interna a INTERNET ..ECOM_PRODUTOS. E o Protheus não executa,
IF TCSPExist("ECOM_ATUALIZA")
MsgInfo("Existe a Stored Procedure")
ENDIF
É identificada a Stored Procedure, com a função TCSPExist
aResult:= TCSPEXEC("ECOM_ATUALIZA",CODIGO,DESCRICAO,UM,PRECO), o array, não está retornando nada, mas quando faço o debug, vejo que as variáveis CODIGO,DESCRICAO,UM,PRECO estão com dos devidos valores.
Obrigado!
Alguém poderia dar alguma dica, de como eu posso executar uma stored procedure no sql server 2008 R2, e passando os parâmetros através do Protheus usando a função TCSPEXEC.
Problema: No meu SQL, tenho a base de dados DADOSADV, que é a populada pelo Protheus, e tenho outra base de dados INTERNET, que é fora do Protheus, onde pertence a stored procedure “ECOM_ATUALIZA”, criei também a stored procedure “ECOM_ATUALIZA”, na base de dados DADOSADV, e dentro dela e faço a referência interna a INTERNET ..ECOM_PRODUTOS. E o Protheus não executa,
IF TCSPExist("ECOM_ATUALIZA")
MsgInfo("Existe a Stored Procedure")
ENDIF
É identificada a Stored Procedure, com a função TCSPExist
aResult:= TCSPEXEC("ECOM_ATUALIZA",CODIGO,DESCRICAO,UM,PRECO), o array, não está retornando nada, mas quando faço o debug, vejo que as variáveis CODIGO,DESCRICAO,UM,PRECO estão com dos devidos valores.
Obrigado!
Por favor Acessar ou Registrar para participar da conversa.
- will3698
- Desconectado
- Membro Dourado
Menos
Mais
- Postagens: 310
- Obrigados Recebidos: 1
9 anos 3 meses atrás #28883
por will3698
Respondido por will3698 no tópico função TCSPEXEC executar uma stored procedure
Ola Carlos boa tarde
Eu aqui trabalho com Oracle, já usei a função TCSPEXEC() a um tempo atraz, mas para procedimentos mais simples, passei a adotar a TcSqlExec() mesmo, e a passagem de parametros é feita normalmente. Não sei as diferenças exatas de base MSSQL para ORACLE nesse ponto, mas acredito que talvez te ajude esse ponto de vista.
segue exemplo :
cStrSql := "BEGIN "
cStrSql += "FOR R IN (SELECT DA1_CODTAB TABELA, "
cStrSql += "DA1_FILIAL FILIAL, "
cStrSql += "DA1_CODPRO PRODUTO, "
cStrSql += "DA1_PRCVEN PRECO "
cStrSql += "FROM DA1010 DA1 "
cStrSql += "WHERE DA1_FILIAL = '06' "
cStrSql += "AND DA1_CODTAB = '050' "
cStrSql += "AND DA1_CODPRO = '"+alltrim(cProd)+"' "
cStrSql += "AND DA1.D_E_L_E_T_ <> '*' "
cStrSql += "AND DA1_PRCVEN <> 0) "
cStrSql += "LOOP "
cStrSql += "UPDATE DA1010 SET DA1_PRCVEN = R.PRECO "
cStrSql += "WHERE DA1_FILIAL IN ('13','14') "
cStrSql += "AND DA1_CODTAB IN ('052','054') "
cStrSql += "AND DA1_CODPRO = R.PRODUTO "
cStrSql += "AND D_E_L_E_T_ <>'*'; "
cStrSql += "END LOOP; "
cStrSql += "END; "
TcSqlExec(cStrSql)
lResult := TCSQLEXEC(cStrSql)
att
Eu aqui trabalho com Oracle, já usei a função TCSPEXEC() a um tempo atraz, mas para procedimentos mais simples, passei a adotar a TcSqlExec() mesmo, e a passagem de parametros é feita normalmente. Não sei as diferenças exatas de base MSSQL para ORACLE nesse ponto, mas acredito que talvez te ajude esse ponto de vista.
segue exemplo :
cStrSql := "BEGIN "
cStrSql += "FOR R IN (SELECT DA1_CODTAB TABELA, "
cStrSql += "DA1_FILIAL FILIAL, "
cStrSql += "DA1_CODPRO PRODUTO, "
cStrSql += "DA1_PRCVEN PRECO "
cStrSql += "FROM DA1010 DA1 "
cStrSql += "WHERE DA1_FILIAL = '06' "
cStrSql += "AND DA1_CODTAB = '050' "
cStrSql += "AND DA1_CODPRO = '"+alltrim(cProd)+"' "
cStrSql += "AND DA1.D_E_L_E_T_ <> '*' "
cStrSql += "AND DA1_PRCVEN <> 0) "
cStrSql += "LOOP "
cStrSql += "UPDATE DA1010 SET DA1_PRCVEN = R.PRECO "
cStrSql += "WHERE DA1_FILIAL IN ('13','14') "
cStrSql += "AND DA1_CODTAB IN ('052','054') "
cStrSql += "AND DA1_CODPRO = R.PRODUTO "
cStrSql += "AND D_E_L_E_T_ <>'*'; "
cStrSql += "END LOOP; "
cStrSql += "END; "
TcSqlExec(cStrSql)
lResult := TCSQLEXEC(cStrSql)
att
Por favor Acessar ou Registrar para participar da conversa.
- CCASKWD
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 114
- Obrigados Recebidos: 0
9 anos 3 meses atrás #28948
por CCASKWD
Respondido por CCASKWD no tópico função TCSPEXEC executar uma stored procedure
Olá Willian,
Consegui usando,
IF TCSPExist("ECOM_ATUALIZA")
cQuerysp := "EXEC ECOM_ATUALIZA '"+TMP->CODIGO+"','"+TMP->DESCRICAO+"','"+TMP->UM+"','"+CVALTOCHAR(TMP->PRECO)+"','";
+CVALTOCHAR(TMP->ESTOQUE)+"','"+CVALTOCHAR(TMP->PESO)+"','"+CVALTOCHAR(TMP->ALTURA)+"','"+CVALTOCHAR(TMP->LARGURA)+"','";
+CVALTOCHAR(TMP->COMPRIMENTO)+"','"+TMP->ATIVO+"'"
ELSE
MSGSTOP("NÃO FOI ENCONTRADA STORED PROCEDURE ..:ECOM_ATUALIZA")
ENDIF
IF (TCSQLExec(cQuerysp) < 0)
MSGALERT("ATUALIZAÇÃO DO PRODUTO REALIZADA!")
ELSE
MSGSTOP("OCORREU UM DURANTE O PROCESSO!" + TCSQLError())
ENDIF
Consegui usando,
IF TCSPExist("ECOM_ATUALIZA")
cQuerysp := "EXEC ECOM_ATUALIZA '"+TMP->CODIGO+"','"+TMP->DESCRICAO+"','"+TMP->UM+"','"+CVALTOCHAR(TMP->PRECO)+"','";
+CVALTOCHAR(TMP->ESTOQUE)+"','"+CVALTOCHAR(TMP->PESO)+"','"+CVALTOCHAR(TMP->ALTURA)+"','"+CVALTOCHAR(TMP->LARGURA)+"','";
+CVALTOCHAR(TMP->COMPRIMENTO)+"','"+TMP->ATIVO+"'"
ELSE
MSGSTOP("NÃO FOI ENCONTRADA STORED PROCEDURE ..:ECOM_ATUALIZA")
ENDIF
IF (TCSQLExec(cQuerysp) < 0)
MSGALERT("ATUALIZAÇÃO DO PRODUTO REALIZADA!")
ELSE
MSGSTOP("OCORREU UM DURANTE O PROCESSO!" + TCSQLError())
ENDIF
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Funções AdvPL
- função TCSPEXEC executar uma stored procedure
Tempo para a criação da página:0.097 segundos