我在網上搜索了幾天,找不到答案。Perl DBI是否支持Oracle Subquery保理?
Perl DBI是否支持Oracle子查詢因子分析(即WITH-clause)?
作爲一個例子,簡單的Perl DBI應用程序下進一步失敗,出現錯誤:
DBD::Oracle::st fetchrow_array failed: ERROR no statement executing (perhaps you need to call execute first)
簡單的Perl DBI應用:
#!/bin/perl
use DBI;
my $sql = <<END_SQL;
WITH w AS
(
SELECT wafer_seq
FROM wafer
WHERE load_time > sysdate - 1
)
SELECT v.*
FROM vwafer v, w
WHERE v.wafer_seq = w.wafer_seq
ORDER BY v.wafer_seq
END_SQL
my $dbh = DBI->connect('DBI:Oracle:<schema_id>', '<username>', '<password>');
my $sth = $dbh->prepare($sql) || die "ERROR PREP";
$sth->execute() || die "ERROR EXEC";
while (my @row = $sth->fetchrow_array())
{
print "@row\n";
}
$sth->finish();
$dbh->disconnect();
exit 0;
此相同的應用程序將工作,如果我只需更改SQL到:
SELECT v.*
FROM vwafer v,
(
SELECT wafer_seq
FROM wafer
WHERE load_time > sysdate - 1
) w
WHERE v.wafer_seq = w.wafer_seq
ORDER BY v.wafer_seq
最後,我證實了上述兩個SQL工作w直接在數據庫可視化應用程序中執行(例如, DBVisualizer中)。
PostgreSQL調用這個「通用表表達式」,並且據我記得,我只是用它來描述它,'prepare','execute'和'fetch *'。 – dgw