Show
Ignore:
Timestamp:
10/02/08 18:12:10 (3 months ago)
Author:
nowelium
Message:

mysql の procedure サポートは終わり。
General error: 2014 Cannot execute queries while other unbuffered queries are active. とかは、PDOのPDO::MYSQL_ATTR_USE_BUFFERED_QUERY をいくら設定してもダメなので、少し逃げ。一端切断すればなんとかなるけど、Datasource設定とかは管理外なので、やらない。
multi rows は 2次元配列で。

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/php/misc/Hermit/src/Hermit/command/HermitProcedureCommand.php

    r20417 r20492  
    2121        $this->annote = $annote; 
    2222    } 
    23  
    2423    public function execute(PDO $pdo, array $parameters){ 
     24        if($this->sqlCreator instanceof HermiSetupSqlCreator){ 
     25            if($this->sqlCreator->hasSetupSql()){ 
     26                $setupBuilder = new HermitSetupStatementBuilder($this->method, $this->annote, $this->sqlCreator); 
     27                $setupStatement = $setupBuilder->build($pdo); 
     28                $setupStatement->execute($parameters); 
     29            } 
     30        } 
     31         
    2532        $builder = new HermitProcedureStatementBuilder($this->method, $this->annote, $this->sqlCreator); 
    2633        $stmt = $builder->build($pdo); 
    2734        $stmt->execute($parameters); 
    2835        $rs = HermitProcedureResultSetFactory::create($pdo, $stmt->getSqlParameter()); 
     36// 
     37//        to pdo_mysql cause: Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. 
     38//        if($rs instanceof HermitParameterBind){ 
     39//            $rs->bindParameter($pdo, $parameters); 
     40//        } 
     41//        return $rs->execute($stmt, $this->type); 
     42// 
     43        $returnValue = $rs->execute($stmt, $this->type); 
    2944        if($rs instanceof HermitParameterBind){ 
    3045            $rs->bindParameter($pdo, $parameters); 
    3146        } 
    32         return $rs->execute($stmt, $this->type); 
     47        return $returnValue; 
    3348    } 
    3449}