Perguntas função TCSPEXEC executar uma stored procedure

Mais
9 anos 3 meses atrás #28881 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!

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 3 meses atrás #28883 por will3698
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

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 3 meses atrás #28948 por CCASKWD
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

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.097 segundos
Joomla templates by a4joomla