2010-06-16 80 views
2

如何通过使用perl和dbi对sql服务器来检索存储过程的返回值? 可以有人提供的例子。Perl Dbi和存储过程

+0

我在另一个区域回答了这个问题。 http://stackoverflow.com/questions/64200/how-do-i-call-mysql-stored-procedures-from-perl – Nexion 2012-05-02 00:39:24

回答

8

DBD :: ODBC t/dir中有一些示例(请参阅20SqlServer.t)。基本上你做的(不是一个完整的工作示例):

my $output; 
my $input = 'fred'; 
my $sth = $dbh->prepare(q/{ ? = call myproc(?) }/); 
$sth->bind_param_inout(1, \$output, 100); 
$sth->bind_param(2, $input); 
$sth->execute 

现在$输出应该包含任何您的过程返回。确保你在bind_param_inout中设置了足够的长度(上面的100)。

+0

+1你的例子刚刚解决了我的一个问题。谢谢 – bvr 2011-04-05 12:09:35

+0

感谢您提供有关SQL sproc out参数+1的提醒。 ( - :这不是解释如何检索一个存储过程的返回值 – 2011-11-02 16:57:57

+1

我不明白这怎么解释如何获得过程的返回值,“?=”是返回值,如果你想结束这个过程(假设返回一个来自proc的值被数据库支持)并返回XXX,那么第一个占位符就是返回值。上面的例子可以是一个函数(在所有dbs中返回一个值)和第一个占位符就是返回值,你需要用一个例子来定义你认为的返回值。 – bohica 2011-11-02 18:47:39