我正在使用Perl(DBI:ODBC)连接到Teradata。正在执行的SQL语句是替换过程语句。
Teradata ODBC驱动程序不允许准备REPLACE PROCEDURE抛出异常。
所以,我没有准备+执行,而是尝试使用do
$rownum = $con->do("replace procedure ... ");
问题是如果无法执行替换过程(语法错误,缺少对象),则ODBC驱动程序不会生成错误。它只返回带有错误列表的记录集。
因此,如果在替换过程中发生错误,则$rownum
值将不为零。
但是DBI-> do不支持记录集的返回。
那么,目前的情况是:
1.由于驱动程序不支持声明,我无法使用prepare + execute
2.我不能使用do,因为我无法获取错误列表(但是我可以通过非零行影响值来识别此错误)。
一般来说:如何获取无法准备的查询结果?
谢谢, 迪马