Perl DBI没有准备

时间:2014-03-12 22:31:32

标签: perl odbc teradata dbi

我正在使用Perl(DBI:ODBC)连接到Teradata。正在执行的SQL语句是替换过程语句。 Teradata ODBC驱动程序不允许准备REPLACE PROCEDURE抛出异常。 所以,我没有准备+执行,而是尝试使用do $rownum = $con->do("replace procedure ... ");

问题是如果无法执行替换过程(语法错误,缺少对象),则ODBC驱动程序不会生成错误。它只返回带有错误列表的记录集。

因此,如果在替换过程中发生错误,则$rownum值将不为零。 但是DBI-> do不支持记录集的返回。 那么,目前的情况是: 1.由于驱动程序不支持声明,我无法使用prepare + execute 2.我不能使用do,因为我无法获取错误列表(但是我可以通过非零行影响值来识别此错误)。

一般来说:如何获取无法准备的查询结果?

谢谢, 迪马

1 个答案:

答案 0 :(得分:0)

强制DBD :: ODBC使用SQLExecDirect而不是SQLPrepare / SQLExecute。 odbc_exec_direct