0

我需要在 PRO*C 中获取 VARCHAR2 变量的输出。此变量来自 Oracle 过程。事情是这样的:

这工作很好,

bzero(d_fecha_ejecucion.arr,20); 
 EXEC SQL SELECT
 TO_CHAR(SYSDATE,'dd-mon-yy hh24:mi:ss') INTO :d_fecha_ejecucion FROM
 DUAL;           
 sprintf(c_msg,"--->FECHA EJECUCIÓN: [%s]",(char *)d_fecha_ejecucion.arr);

但是当我尝试从这样的过程中获取变量(VARCHAR SV_desc_error)时:

 EXEC SQL EXECUTE
 BEGIN
 PACKAGE.PROCEDURE_PR(:SN_num_ev, :SN_cod_msjerror,:SV_desc_error);
 END;
END-EXEC;

bzero(SV_desc_error.arr,4000);
SV_desc_error.len = (unsigned short)strlen((char *)SV_desc_error.arr);

sprintf(c_msg,"--->Out PACKAGE.PROCEDURE_PR(SN_num_ev: [%d],SN_cod_msjerror: [%d],SV_desc_error: [%s])",SN_num_evento,SN_cod_msjerror,(char *)SV_desc_error.arr);

不工作...变量返回空

我使用匿名块进行测试并且可以工作...

那么,我可以得到这个变量吗?感谢。

4

1 回答 1

1

在您的代码中,您在代码执行后设置“bzero”,这应该会清除您可能返回的任何值。

更正这一点并重新运行。

于 2013-08-14T16:04:38.593 回答