[英]How to get null value from stored procedure out parameter using php mssql?
[英]cant get out parameter from stored procedure using php
執行此功能以執行存儲過程時,我將數組作為out參數。
function ExecuteProcedure($procedureName, $parameters)
{ $query = "begin " . $procedureName . "(" ;
for($i=0; $i<count($parameters); $i++)
{
if($i==0)
$query = $query . ":" . $parameters[$i][0] ;
else
$query = $query . ", :" . $parameters[$i][0] ;
}
$query = $query . "); end;";
//echo $query . "<br />";
$this->stmt = ociparse($this->con, $query) or die (ocierror());
for($i=0; $i<count($parameters); $i++)
{
$valueList = $parameters[$i];
if(count($valueList) == 2)
ocibindbyname($this->stmt, $valueList[0], $valueList[1]) or die (ocierror());
else if(count($valueList) == 3)
ocibindbyname($this->stmt, $valueList[0], $valueList[1], $valueList[2]) or die (ocierror());
else{
ocibindbyname($this->stmt, $valueList[0], $valueList[1], $valueList[2], $valueList[3]) or die (ocierror());
}
}
@ociexecute($this->stmt, OCI_DEFAULT) or die (ocierror());
return $parameters;
}
我建議您首先使用一個簡單的示例,然后按照包含有關OUT變量的信息的文檔進行操作:
使用OUT綁定時,必須指定maxlength,以便PHP分配足夠的內存來保存返回的值。
建立一個簡單的過程:
CREATE PROCEDURE foo (p OUT VARCHAR2) IS
BEGIN
p := 'bar';
END foo;
然后在PHP中:
$stid = oci_parse($conn, 'begin foo(:p1); end;');
oci_bind_by_name($stid, ':p1', $p1, 3);
echo $p1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.