Boa tarde
Uso xHarbour + SQLRdd
Não estou conseguindo chamar uma funçao da minha base de dados em postgresql e pegar o retorno
Alguem poderia me ajudar.
funcao do banco -> fnc_ret_cod_est_tbl( par1, par2, par3, par4, par5 ) : retorna varchar
chamada do programa
....
cComm := "select fnc_ret_cod_est_tbl( '00', 'orccab', '0', 'num_orc', 'F' )" aRet :={}
oSql := SR_GetConnection()
oSql:exec( cComm, ,.t. ,@aRet)
...
Qdo chega na linha oSql:exec o aplicativo fecha sem mostrar nenhum erro
OlaHola
a procedure esta ok, faco a chamada pela pgadminIII e retorna os dados como abaixo
OK|21000006|0|0|0|0|0|0|0|0|0|||||||||A|
Deste jeito funcionou e não travou
oSql := SR_GetConnection()
oSql:exec( "select fnc_ret_cod_est_tbl( '00', 'orccab', '0', 'num_orc', 'F' )", ,.f. )
oSql:commit()
mas como faço para pegar o retorno : OK|21000006|0|0|0|0|0|0|0|0|0|||||||||A|
Boa tarde
Uso xHarbour + SQLRdd
Não estou conseguindo chamar uma funçao da minha base de dados em postgresql e pegar o retorno
Alguem poderia me ajudar.
funcao do banco -> fnc_ret_cod_est_tbl( par1, par2, par3, par4, par5 ) : retorna varchar
chamada do programa
....
cComm := "select fnc_ret_cod_est_tbl( '00', 'orccab', '0', 'num_orc', 'F' )" aRet :={}
oSql := SR_GetConnection()
oSql:exec( cComm, ,.t. ,@aRet)
...
Qdo chega na linha oSql:exec o aplicativo fecha sem mostrar nenhum erro
OlaHola wagner
Fiz um programa de teste como mostrado abaixo, mas quando chega na linha
cRet := oSql:exec( "select fnc_ret_cod_est_tbl( '00', 'orccab', '0', 'num_orc', 'F' )", ,.T.)
O programa fecha sem mostrar nada.
#include "pgs.ch"
#include "sqlrdd.ch"
#define ID_MAINICON 100
#define GTI_FONTWIDTH 5
#define GTI_FONTSIZE 4
REQUEST DBFCDX
REQUEST DBFFPT
REQUEST SQLRDD
REQUEST SR_PGS
REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
// FONTE DO PRG
PROCEDURE Main()
LOCAL GetList := {}, aReturn := {}, nErr, nPos, cComm, cRet
CLEAR SCREEN
SET AUTOPEN ON
SET CENTURY ON
SET DATE FORMAT TO "DD/MM/YYYY"
SET EPOCH TO 1980
SET CONFIRM ON
SET SCOREBOARD OFF
SET WRAP ON
SET DATE BRITISH
SET INTENSITY ON
SET DELETED ON
SET CONSOLE OFF
SET EXCLUSIVE OFF
SET SOFTSEEK OFF
SET UNIQUE OFF
SET DECIMAL TO 6
SET ERRORLOG TO wjp_error.log ADDITIVE
HB_LANGSELECT( "PT" )
HB_SetCodePage( "PT850" )
SetMode( 25, 80 )
rddsetdefault( "SQLRDD" )
// SR_SetBaseLang( "MSG_PT" ) // 2
nCon := SR_AddConnection( CONNECT_POSTGRES , "pgs=localhost;uid=postgres;dtb=crc_wjp_1;pwd=root" )
IF nCon < 0
alert( "Falha na conexao com o banco de dados !" )
QUIT
ENDIF
// handle da conexao ativa
oSql := SR_GetConnection()
cComm := "select fnc_ret_cod_est_tbl( '00', 'orccab', '0', 'num_orc', 'F' )" oSql := SR_GetConnection()
cRet := oSql:exec( "select fnc_ret_cod_est_tbl( '00', 'orccab', '0', 'num_orc', 'F' )", ,.T.)
oSql:commit()
alert( cRet )
RETURN
// PROJETO XHB
CINI =
C_OUTPUTFOLDER =
DEFFILE =
INCLUDEFOLDERS =
LAUTORUN = .T.
LDEBUG = .F.
LGUI = .F.
LIBFOLDERS =
LMT = .F.
LNOAUTOFWH = .F.
LPRG_CLASSICDEBUG = .T.
LPRG_DEBUG = .T.
LUSEDLL = .F.
MAPFILE =
MYC_FLAGS =
MYDEFINES =
MYLINK_FLAGS =
MYPRG_FLAGS =
MYRC_FLAGS =
MYSLY_FLAGS =
OUTPUTFOLDER =
PRG_OUTPUTFOLDER =
RC_OUTPUTFOLDER =
RUNARGUMENTS =
SLY_OUTPUTFOLDER =
STARTIN =
TARGETFOLDER =
[teste_slq1.PRG]
MYC_FLAGS =
MYDEFINES =
MYPRG_FLAGS =
[C:\xHB\Lib\SQL.lib]
Ola ArielsoHola wagner
Esta function no postgresql faz o controle de todos os numeradores do sistema, quando passo os parametros corretos me retorna o proximo numero.
Por isto preciso pegar o retorno
[]s
Wagner
El viernes, 30 de abril de 2021 a las 18:09:51 UTC-5, Wagner Parron escribió:
Ola Arielso
Esta function no postgresql faz o controle de todos os numeradores do sistema, quando passo os parametros corretos me retorna o proximo numero.Hola wagner
Por isto preciso pegar o retorno
[]s
Wagner
prueba de esta forma
cComm := "select * FROM fnc_ret_cod_est_tbl( '00', 'orccab', '0', 'num_orc', 'F' )"
aRet :={}
oSql := SR_GetConnection()
oSql:exec( cComm, ,.t. ,@aRet)
If Len(aRet) > 0
For x = 1 to Len(aRet)
? aRet[x, 1]
inkey(0)
Next
Else
? "no hay información"
Endif
Em sábado, 1 de maio de 2021 às 01:14:48 UTC-3, arielso...@gmail.com escreveu:Hola, Wagner
El viernes, 30 de abril de 2021 a las 18:09:51 UTC-5, Wagner Parron escribió:
Ola Arielso
Esta function no postgresql faz o controle de todos os numeradores do sistema, quando passo os parametros corretos me retorna o proximo numero.Hola wagner
Por isto preciso pegar o retorno
[]s
Wagner
prueba de esta forma
cComm := "select * FROM fnc_ret_cod_est_tbl( '00', 'orccab', '0', 'num_orc', 'F' )"
aRet :={}
oSql := SR_GetConnection()
oSql:exec( cComm, ,.t. ,@aRet)
If Len(aRet) > 0Ola arielso
For x = 1 to Len(aRet)
? aRet[x, 1]
inkey(0)
Next
Else
? "no hay información"
Endif
Fiz como mostrada acima, mas fecha o programa na linha
oSql:exec( cComm, ,.t. ,@aRet)
Não sei qual e o motivo, os comandos de select,update e delete funcionam normais,
mas quando chamo o select com a function "select * FROM fnc_ret_cod_est_tbl( '00', 'orccab', '0', 'num_orc', 'F' )" da o problema.
estou usando o xhb de 09/05/2017 sera que tem algum bug no pacote deste periodo
[]s
Wagner
Em sábado, 1 de maio de 2021 às 01:14:48 UTC-3, arielso...@gmail.com escreveu:
El viernes, 30 de abril de 2021 a las 18:09:51 UTC-5, Wagner Parron escribió:
Ola Arielso
Esta function no postgresql faz o controle de todos os numeradores do sistema, quando passo os parametros corretos me retorna o proximo numero.Hola wagner
Por isto preciso pegar o retorno
[]s
Wagner
prueba de esta forma
cComm := "select * FROM fnc_ret_cod_est_tbl( '00', 'orccab', '0', 'num_orc', 'F' )"
aRet :={}
oSql := SR_GetConnection()
oSql:exec( cComm, ,.t. ,@aRet)
If Len(aRet) > 0Ola arielso
For x = 1 to Len(aRet)
? aRet[x, 1]
inkey(0)
Next
Else
? "no hay información"
Endif
Fiz como mostrada acima, mas fecha o programa na linha
oSql:exec( cComm, ,.t. ,@aRet)
Não sei qual e o motivo, os comandos de select,update e delete funcionam normais,
mas quando chamo o select com a function "select * FROM fnc_ret_cod_est_tbl( '00', 'orccab', '0', 'num_orc', 'F' )" da o problema.
estou usando o xhb de 09/05/2017 sera que tem algum bug no pacote deste periodo
[]s
Wagner
Buenas
use o seguinte
cComm := "select cast( fnc_ret_cod_est_tbl( '00', 'orccab', '0', 'num_orc', 'F' ) as varchar(30))"
aRet :={}
oSql := SR_GetConnection()
oSql:exec( cComm, ,.t. ,@aRet)
If Len(aRet) > 0
For x = 1 to Len(aRet)
? aRet[x, 1]
inkey(0)
Next
por ser varchar e vc não especificou o tamanho do campo ele se perde ao decodificar o retorno
[]s
Luiz
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 374 |
Nodes: | 16 (3 / 13) |
Uptime: | 117:25:46 |
Calls: | 7,952 |
Calls today: | 3 |
Files: | 13,008 |
Messages: | 5,811,841 |