Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在perl中执行存储过程?_Perl_Sybase - Fatal编程技术网

如何在perl中执行存储过程?

如何在perl中执行存储过程?,perl,sybase,Perl,Sybase,如何在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) { o

如何在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);
     }

如果使用的是
DBI
DBD::Sybase
,则存储过程的处理方式与执行任何其他SQL语句的方式完全相同。有一个区别是,它还将为返回状态返回一个额外的结果集。在调用
fetch*
方法时,可以检查
$sth->{syb\u result\u type}
的值,查看它是否为
CS\u STATUS\u result

然而,与其他数据库驱动程序相比,
DBD::Sybase
有点奇怪。考虑到Sybase为开发人员提供的DB库,有些事情可能太难了,所以我个人不会责怪作者以这种方式实现驱动程序<代码>DBD::Sybase仍然做得很好

您肯定应该花一些时间阅读CPAN文档中的存储过程部分,因为它描述了它的功能和不功能。事实上,喝一杯咖啡,读一读。我使用
DBD::Sybase
做了大量的工作,它确实帮助了我


如果使用的是
DBI
DBD::Sybase
,则存储过程的处理方式与执行任何其他SQL语句的方式完全相同。有一个区别是,它还将为返回状态返回一个额外的结果集。在调用
fetch*
方法时,可以检查
$sth->{syb\u result\u type}
的值,查看它是否为
CS\u STATUS\u result

然而,与其他数据库驱动程序相比,
DBD::Sybase
有点奇怪。考虑到Sybase为开发人员提供的DB库,有些事情可能太难了,所以我个人不会责怪作者以这种方式实现驱动程序<代码>DBD::Sybase仍然做得很好

您肯定应该花一些时间阅读CPAN文档中的存储过程部分,因为它描述了它的功能和不功能。事实上,喝一杯咖啡,读一读。我使用
DBD::Sybase
做了大量的工作,它确实帮助了我

就像这样:

my $sql = qq{ BEGIN  SCHEMA_NAME.STORED_PROC_NAME(); END;};
my $sth = $dbh->prepare($sql)  || die $sth->$DBI::errstr;
$sth->execute  || die $sth->errstr; } 
正是这样:

my $sql = qq{ BEGIN  SCHEMA_NAME.STORED_PROC_NAME(); END;};
my $sth = $dbh->prepare($sql)  || die $sth->$DBI::errstr;
$sth->execute  || die $sth->errstr; } 

这是用perl将数据库结果保存到.csv文件的正确方法吗?连接字符串看起来如何?
GetAllBooks
返回什么?这将为每一行结果打开、追加和关闭文件。效率很低。您应该将
打开
关闭
命令置于
while
循环之外。另外,使用三个参数open和词法文件句柄:
openmy$fh,“>>”,“Output.csv”
print$fh“string”
$csv\u记录的作用是什么?你的代码有效吗?这是用perl将数据库结果保存到.csv文件的正确方法吗?连接字符串看起来如何?
GetAllBooks
返回什么?这将为每一行结果打开、追加和关闭文件。效率很低。您应该将
打开
关闭
命令置于
while
循环之外。另外,使用三个参数open和词法文件句柄:
openmy$fh,“>>”,“Output.csv”
print$fh“string”
$csv\u记录的作用是什么?你的代码有效吗?而@amesee:我的实现方式是,$varible=“exec[procedure name]”;&使用DBI module@amesee:我的实现方式是,$varible=“exec[procedure name]”;&使用的DBI模块