为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】*:
DPI的for循环语句中,每次dpi_exec_direct执行后都需要用dpi_alloc_stmt以及dpi_free_stmt 释放资源吗?
目前的结果是dpi_exec_direct执行的第一次可以成功,for循环的后面几次就失败。
如果在for中添加dpi_alloc_stmt以及dpi_free_stmt就不会报错。
在循环外定义好变量、申请好资源,在循环内反复利用(这里是执行相同的SQL或参数化SQL),这是正常的编程逻辑;循环内反复申请和释放资源,可以想象性能是糟糕的,除非每次执行的是不同SQL
根据手册说明,在其执行前后 需进行句柄的申请和释放 以避免内存使用堆积和泄漏,如果需循环执行某sql,可尝试通过prepare+bindpara+exec的方式执行:

dpi编程相关资料参见手册如下:
https://eco.dameng.com/document/dm/zh-cn/pm/dpi-rogramming-guide