通过PHP PDO从Oracle SP获取数据[输出是光标]

时间:2016-05-05 04:28:11

标签: php mysql database oracle pdo

有人可以帮我解决如何通过php PDO调用oracle中的存储过程吗?我有一个以下存储过程。

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);

谢谢。

1 个答案:

答案 0 :(得分: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));