你在在函数外先建立一个相同类型的对象,用来接收此值 ,或是用传址引用的方式,如
function queryprocess($query,&$returnval) {//传址方式返回值 
........
if(OCIFetch($cursor))
$returnval= $cursor;
else
$returnval= false;
}
//这样之后,你就可以先判断返回的 $returnval是否有值 ,,如果有的话,,就可以使用啦 。

解决方案 »

  1.   

    关于我的第一个建议
    由于ORCALE数据库我不太熟,所以我不知道和你程序里面$cursor对应的是什么类型的变量。。所以,你要看一下资料,看返回的是什么。。
      

  2.   

    我也是初学,但是这个$curosor市oracle的OCI statment
    如果用echo输出这个$cursor的话:Resource ID #‘数字’
    我先试一下你所说的方法,谢谢了
      

  3.   

    我们公司的一个DB tool用到的一个简单类,楼主可以自己看看,一般的DB用途也就是这些:
    class Database
    {
    Var $ORACLE_USER;
    Var $ORACLE_PASSWORD;
    Var $ORACLE_SID;
    function Execute($strSQL)
    {
    global $debugstatus;
    if($debugstatus=="on")
    print "<font color=blue>debug> $strSQL<br></font>"; $conn = $this->OCIConnect();
    $stmt=OCIParse($conn,$strSQL);
    OCIExecute($stmt);
    OCICommit($conn);
    $this->OCIDisconnect($conn);
    }

    function GetFieldValue($stmt,$FieldName)
    {
    $retVal = "";
    $nrows = OCIFetchStatement($stmt,$results);
    if($nrows>0)
    {
        while ( list($key,$val) = each($results))
        {
    $arr[$key] = $val[0];
        }
        }

    if (count($arr)>0)
    {
    $retVal=$arr[strtoupper($FieldName)];
    }
    OCIFreeStatement($stmt);

    return $retVal;
    } function GetMatrix($stmt)
    {
    $ncols=OCINumCols($stmt);
    $column_name=array();
    for($i=1;$i<=$ncols;$i++)
    {
    $column_name[$i-1]=OCIColumnName($stmt,$i);
    }
    $i=0;
    $arr2=array();
    while(OCIFetchInto($stmt,&$arr,OCI_RETURN_LOBS))
    {
    for($j=0;$j<$ncols;$j++)
    {
    $arr2[$column_name[$j]]=$arr[$j];
    }
    $matrix[$i]=$arr2;
    $i++;
    }
    $this->EnumPointer=0;
    OCIFreeStatement($stmt);
    return $matrix;
    } function OCIConnect()
    {
    return OCILogon($this->ORACLE_USER, $this->ORACLE_PASSWORD,$this->ORACLE_SID);
    } function OCIDisconnect($conn)
    {
    OCILogoff($conn);
    } function PrepareSQL($conn,$strSQL)
    {
    global $debugstatus;
    if($debugstatus=="on")
    print "<font color=blue>debug> $strSQL<br></font>";
    $query = "ALTER SESSION SET NLS_DATE_FORMAT = 'MM/DD/YYYY HH12:MI AM'";
    $stmt = OCIParse($conn, $query);
    OCIExecute($stmt);
    $stmt=OCIParse($conn,$strSQL);
    OCIExecute($stmt);
    return $stmt;
    }

    //GetATable and ExcuteSql is a test function
    function GetATable($strTableName)
    {
    $conn = $this->OCIConnect("test","oracle");
    $strSQL = "SELECT * FROM ".$strTableName;
    $stmt=OCIParse($conn,$strSQL);
    OCIExecute($stmt); $nrows = OCIFetchStatement($stmt,$results);
    if ( $nrows > 0 ) 
    {
        print "<TABLE BORDER=\"1\">\n";
        print "<TR>\n";
       
        while ( list( $key, $val ) = each( $results ) ) 
        {
           print "<TH>$key</TH>\n";
        }
       
        print "</TR>\n";
       
        for ( $i = 0; $i < $nrows; $i++ ) 
        {
           reset($results);
           print "<TR>\n";
           while ( $column = each($results) ) 
           {   
              $data = $column['value'];
              print "<TD>$data[$i]</TD>\n";
           }
           print "</TR>\n";
        }
        print "</TABLE>\n";

    else 
    {
        echo "No data found<BR>\n";
    }      

    $this->OCIDisconnect($conn);
    }

    function DoSql($strSQL)
    {
    $strSQL = trim($strSQL);
    $conn = $this->OCIConnect();
    $stmt=OCIParse($conn,$strSQL);
    OCIExecute($stmt); if(strtolower(substr($strSQL,0,6))!="select")
    {
    if(!OCIError($stmt))
    print("<br>Excuted Success<br>");
    else
    print("<br>Excuted Not success<br>");
    return;
    }
    $nrows = OCIFetchStatement($stmt,$results);
    if ( $nrows > 0 ) 
    {
        print "<TABLE BORDER=\"1\">\n";
        print "<TR>\n";
       
        while ( list( $key, $val ) = each( $results ) ) 
        {
           print "<TH>$key</TH>\n";
        }
       
        print "</TR>\n";
       
        for ( $i = 0; $i < $nrows; $i++ ) 
        {
           reset($results);
           print "<TR>\n";
           while ( $column = each($results) ) 
           {   
              $data = $column['value'];
              print "<TD>$data[$i]</TD>\n";
           }
           print "</TR>\n";
        }
        print "</TABLE>\n";

    else 
    {
        echo "No data found<BR>\n";
    }      

    $this->OCIDisconnect($conn);
    }
    }function DisplaySQLResult($strSQL,$ORACLE_USER,$ORACLE_PASSWORD,$ORACLE_SID)
    {
    if($strSQL != "")
    {
    print("<br>Your SQL Statement:<br>$strSQL<BR>");
    $atas = new Database;
    $atas->ORACLE_USER=$ORACLE_USER;
    $atas->ORACLE_PASSWORD=$ORACLE_PASSWORD;
    $atas->ORACLE_SID=$ORACLE_SID;
    $atas->DoSql($strSQL);
    }
    }
    function DisplayWebexTable($strTableList)
    {
    if($strTableList=="")
    DisplayAllTable();
    $arrTableList = explode(",",$strTableList);

    for($i=0;$i<sizeof($arrTableList);$i++)
    DisplayTable($arrTableList[$i]);
    }function DisplayAllTable()
    {
    $sql = "SELECT table_name FROM dba_table WHERE owner='TEST'";
    $atas = new Database;
    $atas->DoSql($sql);
    }
    }
      

  4.   

    请问,hahawen(变态的大龄青年)$coursor是个什么类型的数据?怎么让他们的类型相匹配?