Home  >  Article  >  Backend Development  >  The reason why PHP calls Oracle stored procedure is not all variables bound.

The reason why PHP calls Oracle stored procedure is not all variables bound.

巴扎黑
巴扎黑Original
2016-11-08 11:46:511683browse

Today I discovered that such an error always occurs when calling Oracle stored procedures using PHP.

ORA-01008: not all variables bound

After struggling for a long time, I found that the variable name was written wrong.

<?php
$conn = oci_connect(&#39;SCOTT&#39;,&#39;TIGER&#39;) or die;// 建立连接 
if (!$conn) { 
$e = oci_error(); 
print htmlentities($e[&#39;message&#39;]); 
exit; 
} 
$sql = &#39;BEGIN pack_gt_calc.Pro_gt_Confirm(:year, :week, :errno, :errmsg); END;&#39;; // 查询语句 
$stid = oci_parse($conn, $sql); // 配置SQL语句,准备执行 
if (!$stid) { 
$e = oci_error($conn); 
print htmlentities($e[&#39;message&#39;]); 
exit; 
}
//  Bind the input parameter
oci_bind_by_name($stid,&#39;:year&#39;,$year,32);
// Bind the input parameter
oci_bind_by_name($stid,&#39;:week&#39;,$week,32);
// Bind the output parameter
oci_bind_by_name($stid,&#39;:errno&#39;,$error,32);
// Bind the output parameter,变量名 ermsg 写错了
oci_bind_by_name($stid,&#39;:ermsg&#39;,$errmsg,64);
// Assign a value to the input 
$year = &#39;2016&#39;;
$week = &#39;4&#39;;
$r = oci_execute($stid); // 执行SQL。OCI_DEFAULT表示不要自动commit 
if(!$r) { 
$e = oci_error($stid); 
echo htmlentities($e[&#39;message&#39;]); 
exit; 
} 
echo "errmsg is : $error<br>";
echo "errmsg is : $errmsg<br>";
oci_close($conn); 
?>


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn