2016-05-05 31 views
1

有人可以帮助我如何通过php PDO调用oracle中的存储过程吗?我有一个下面的存储过程。通过PHP PDO从Oracle SP获取数据[输出是游标]

sp_getpricedetailforhp (p_pbook in NVARCHAR2,p_plevel in NVARCHAR2,p_item in NVARCHAR2,p_qty in NUMBER,p_date in date,p_customer in NVARCHAR2,c_data OUT sys_refcursor) 上述名为sp_getpricedetailforhp的存储过程用于显示价格并输出游标。有人可以帮助我在php PDO中调用上述存储过程。林新与存储过程

下面的代码我试着玩,但没有任何运气

$output =''; 
$query = "CALL sp_getpricedetailforhp(:p_pbook, :p_plevel, :p_item, :p_qty, :p_date, :p_customer, @c_data)"; 
     $stmt= DBInitialize::MiddleSCM2DBPDO()->prepare($query); 

     $stmt->execute(array(
      ':p_pbook' => 'ABANS', 
      ':p_plevel' => 'A', 
      ':p_item' => 'ABCK1800', 
      ':p_qty' => '1', 
      ':p_date' => '05/May/2016', 
      ':p_customer' => 'N/A', 
      ':c_data' => $output, 
     )); 

print_r($output); 

谢谢。

回答

0

您可以从

http://www.php.net/manual/en/pdo.prepared-statements.php#101993

$dbh->query("CALL SomeStoredProcedure($someInParameter1, $someInParameter2, @someOutParameter)"); 
$dbh->query("SELECT @someOutParameter"); 

// OR, if you want very much to use PDO.Prepare(), 
// insert "SELECT @someOutParameter" in your stored procedure and then use: 

$stmt = $dbh->prepare("CALL SomeStoredProcedure(?, ?)"); 
$stmt ->execute(array($someInParameter1, $someInParameter2)); 
+0

所以后来这个全球化志愿服务青年如何显示出来放参数? – user2006506

+0

以 '@',你可以得到输出 迷你例如 而($行= $ results2-> fetch_object()){ 回声 $行 - > { “@ p_userid”}; } –

+0

但我的sp得到一个游标。所以我怎么做? – user2006506