- Timestamp:
- 10/02/08 18:12:10 (3 months ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
lang/php/misc/Hermit/src/Hermit/creator/HermitProcedureCallSqlCreator.php
r20387 r20492 4 4 * @author nowelum 5 5 */ 6 class HermitProcedureCallSqlCreator implements HermitSqlCreator {6 class HermitProcedureCallSqlCreator implements HermitSqlCreator, HermiSetupSqlCreator { 7 7 private $sql; 8 private $setupSql; 8 9 public function initialize(PDO $pdo, ReflectionMethod $method, HermitAnnote $annote){ 9 10 $procedureName = $annote->getProcedure($method); 10 11 $dbMeta = HermitDatabaseMetaFactory::get($pdo); 11 12 $info = $dbMeta->getProcedureInfo($procedureName); 12 $parameterNames = $info->getParamNames(); 13 $sql = 'CALL'; 14 $sql .= ' '; 15 $sql .= $procedureName; 16 $sql .= '('; 17 foreach($parameterNames as $parameterName){ 18 $sql .= '/*' . $parameterName . '*/'; 19 $sql .= '"' . $parameterName . '"'; 20 $sql .= ','; 21 } 22 $sql = substr($sql, 0, -1); 23 $sql .= ')'; 24 $this->sql = $sql; 13 14 $this->setupSql = self::generateSetupSql($info); 15 $this->sql = self::generateCallSql($info); 25 16 } 26 17 public function createSql(){ 27 18 return $this->sql; 28 19 } 20 public function createSetupSql(){ 21 return $this->setupSql; 22 } 23 public function hasSetupSql(){ 24 return null !== $this->setupSql; 25 } 26 protected static function generateCallSql(HermitProcedureInfo $info){ 27 $parameterNames = $info->getParamNames(); 28 $callSql = 'CALL'; 29 $callSql .= ' '; 30 $callSql .= $info->getName(); 31 $callSql .= '('; 32 foreach($parameterNames as $parameterName){ 33 $callSql .= '/*' . $parameterName . '*/'; 34 $callSql .= '"' . $parameterName . '"'; 35 $callSql .= ','; 36 } 37 $callSql = substr($callSql, 0, -1); 38 $callSql .= ')'; 39 return $callSql; 40 } 41 protected static function generateSetupSql(HermitProcedureInfo $info){ 42 $begin = false; 43 $parameterNames = $info->getParamNames(); 44 45 $setupSql = 'SET'; 46 $setupSql .= ' '; 47 foreach($parameterNames as $parameterName){ 48 if($info->typeofIn($parameterName)){ 49 continue; 50 } 51 $begin = true; 52 $setupSql .= '@' . $parameterName; 53 $setupSql .= ' = '; 54 $setupSql .= '/*' . $parameterName . '*/'; 55 $setupSql .= '"' . $parameterName . '"'; 56 $setupSql .= ','; 57 } 58 if(!$begin){ 59 return null; 60 } 61 return substr($setupSql, 0, -1); 62 } 29 63 }
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)