我有一个使用PL/SQL代码生成的动态SQL SELECT
语句。如何在Perl DBI中获取动态SQL输出?
declare
sql_query clob;
begin
sql_query := 'select * from ...........';
execute immediate sql_query;
end;
我想要检索上述动态生成SELECT
语句的输出转换成在Perl的阵列。我已经尝试在Perl是,
$sql = "declare
sql_query clob;
begin
sql_query := 'select * from ...........';
execute immediate sql_query;
end;";
$sql_prep = $dbh->prepare($sql) or die "Cannot prepare.";
$sql_prep->execute() or die "Cannot execute.";
while (@row = $sql_prep->fetchrow_array()) {
print "@row\n";
}
而我得到的错误是,
DBD::Oracle::st fetchrow_array failed: ERROR no statement executing (perhaps you need to call execute first) [for Statement "declare
........
........
"] at ./script.pl line 60.
我为PL/SQL新手,我不知道如果我有遵循正确的道路。有人可以请教我这个吗?
在此先感谢!
- Shaakunthala
你为什么不在你的代码的Perl端构造动态SQL?它比一个丑陋的PL/SQL块更容易 –
同意w/Miguell Prz ...在您的Perl代码中构建一个SELECT语句,然后执行()它。 SQL是否必须在PL/SQL中动态创建?如果是这样,那么你可以为SQL字符串绑定一个输入/输出变量,或者绑定一个ORA_RSET in/out变量来有效地返回一个语句句柄......查看DBD :: Oracle文档。 – runrig