2012-04-18 46 views
1

我试图从运行PHP一个非常简单的Oracle过程,使用以下语句:使用PHP执行Oracle过程 - 可能吗?

$sql = 'exec procedureName(param1, param2)'; 
$sql = oci_parse($connection, $sql); oci_execute($sql); 

Oracle SQL Developer中运行这个返回成功“匿名块完成”消息,而是通过运行这个PHP返回一个'ORA-00900:无效SQL语句'错误。

有没有办法从PHP运行此程序?非常感谢

+2

试着摆脱$ sql中的“exec”。 – 2012-04-18 15:35:52

+0

非常感谢,很好的建议,但我得到相同的错误 – Nick 2012-04-18 15:41:29

回答

5

看深入一点,我认为你需要把你的程序调用一个PL/SQL中BEGIN-END对,如:

$sql = 'BEGIN procedureName(:param1, :param2); END;'; 
$stmt_id = oci_parse($connection, $sql); 
oci_bind_by_name($stmt_id, ':param1', $value1); 
oci_bind_by_name($stmt_id, ':param2', $value2); 
oci_execute($stmt_id); 

你需要修改上述在调用oci_bind_by_name时使用适当的变量名称。

另请注意,SQL字符串中分号的存在很重要。

分享和享受。

+1

鲍勃,你真棒 - 谢谢! – Nick 2012-04-18 15:49:37

0
$sql = 'BEGIN procedureName(:param1, :param2); END;'; 
$stmt_id = oci_parse($connection, $sql); 
oci_execute($stmt_id);