如何在perl脚本中执行sybase存储过程** "dbo.xyz“?
my $procedure = "call dbo.GetAllBooks";
my $ExecProc = $dbh -> prepare($procedure) or die "Unable to prepare '$procedure'";
$ExecProc -> execute();
while (@data = $ExecProc->fetchrow_array)
{
open (FH, ">>Output.csv") or die "Could not open file Output.csv: $!";
print FH "@data $csv_record .\n";;
close (Output.csv);
}
发布于 2013-05-20 11:43:55
如果使用DBI
和DBD::Sybase
,则存储过程的处理方式与执行任何其他SQL语句的方式完全相同。有一个不同之处在于,它还将返回返回状态的额外结果集。您可以在调用$sth->{ syb_result_type }
方法时检查fetch*
的值,以确定它是否为fetch*
。
然而,与其他数据库驱动程序相比,DBD::Sybase
有点奇怪。考虑到Sybase为开发人员提供的DB库,有些事情可能太难了,所以我个人并不责怪作者以这种方式实现驱动程序。不过,DBD::Sybase
仍然做得很好。
您肯定应该花一些时间阅读CPAN文档中的存储过程部分,因为它描述了它所做的和不做的事情。实际上,拿一杯咖啡,把所有的东西都读一遍。我使用DBD::Sybase
做了大量的工作,这确实帮助了我。
发布于 2015-09-22 00:29:07
就像这样:
my $sql = qq{ BEGIN SCHEMA_NAME.STORED_PROC_NAME(); END;};
my $sth = $dbh->prepare($sql) || die $sth->$DBI::errstr;
$sth->execute || die $sth->errstr; }
https://stackoverflow.com/questions/16645500
复制相似问题