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/test/HermitProcedure_mysqlTest.php

    r20417 r20492  
    66    const callIN_OUT_PROCEDURE = 'PROC_IN_OUT'; 
    77    public function callIN_OUT(HermitParam $param); 
     8 
     9    const callINOUT_PROCEDURE = 'PROC_INOUT'; 
     10    public function callINOUT(HermitParam $param); 
     11 
     12    const callIN_OUT_OUT_PROCEDURE = 'PROC_IN_OUT_OUT'; 
     13    public function callIN_OUT_OUT(HermitParam $param); 
     14 
     15    const callIN_MULTI_PROCEDURE = 'PROC_IN_MULTIRESULT'; 
     16    const callIN_MULTI_VALUE_TYPE = 'OBJ'; 
     17    public function callIN_MULTI(HermitParam $param); 
     18 
     19    const callIN_IN_MULTI_PROCEDURE = 'PROC_IN_IN_MULTIRESULT'; 
     20    const callIN_IN_MULTI_VALUE_TYPE = 'ASSOC'; 
     21    public function callIN_IN_MULTI(HermitParam $param); 
     22 
     23    const callIN_OUT_MULTI_PROCEDURE = 'PROC_IN_OUT_MULTIRESULT'; 
     24    const callIN_OUT_MULTI_VALUE_TYPE = 'OBJ'; 
     25    public function callIN_OUT_MULTI(HermitParam $param); 
     26 
     27    const callINOUT_MULTI_PROCEDURE = 'PROC_INOUT_MULTIRESULT'; 
     28    const callINOUT_MULTI_VALUE_TYPE = 'OBJ'; 
     29    public function callINOUT_MULTI(HermitParam $param); 
     30 
     31    const callOUT_MULTI_PROCEDURE = 'PROC_OUT_MULTIRESULT'; 
     32    const callOUT_MULTI_VALUE_TYPE = 'OBJ'; 
     33    public function callOUT_MULTI(HermitParam $param); 
     34 
     35    const callNOSPEC_PARAM_PROCEDURE = 'PROC_NOSPEC_PARAM'; 
     36    const callNOSPEC_PARAM_VALUE_TYPE = 'OBJ'; 
     37    public function callNOSPEC_PARAM(HermitParam $param); 
    838} 
    939 
     
    2151    $param->sales = 1000; 
    2252    $param->tax = -1; 
     53 
    2354    $result = $hermit->callIN_OUT($param); 
    2455 
     
    2758    $test->ok($result === null); 
    2859} 
     60{ 
     61    $param = new HermitParam; 
     62    $param->sales = 5000; 
     63 
     64    $result = $hermit->callINOUT($param); 
     65 
     66    $test->ok($result === null); 
     67    $test->is($param->sales, 1000); 
     68 
     69    $result2 = $hermit->callINOUT($param); 
     70    $test->ok($result === null); 
     71    $test->is($param->sales, 200); 
     72} 
     73{ 
     74    $param = new HermitParam; 
     75    $param->sales = 300; 
     76 
     77    $result = $hermit->callIN_OUT_OUT($param); 
     78    $test->ok($result === null); 
     79    $test->ok($param->tax !== null); 
     80    $test->ok($param->total !== null); 
     81    $test->is($param->tax, 60); 
     82    $test->is($param->total, 360); 
     83} 
     84{ 
     85    $param = new HermitParam; 
     86    $param->set('IN_MGR', 7902); 
     87 
     88    $result = $hermit->callIN_MULTI($param); 
     89    $test->ok(is_array($result)); 
     90    $test->is(count($result), 3); 
     91    // same results... 0 to 3 
     92    { 
     93        $test->is(count($result[0]), 1); 
     94        $rs = $result[0][0]; 
     95        $test->is($rs->EMPNO, 7369); 
     96        $test->is($rs->ENAME, 'SMITH'); 
     97        $test->is($rs->JOB, 'CLERK'); 
     98    } 
     99    { 
     100        $test->is(count($result[1]), 1); 
     101        $rs = $result[1][0]; 
     102        $test->is($rs->EMPNO, 7369); 
     103        $test->is($rs->ENAME, 'SMITH'); 
     104        $test->is($rs->JOB, 'CLERK'); 
     105    } 
     106    { 
     107        $test->is(count($result[2]), 1); 
     108        $rs = $result[2][0]; 
     109        $test->is($rs->EMPNO, 7369); 
     110        $test->is($rs->ENAME, 'SMITH'); 
     111        $test->is($rs->JOB, 'CLERK'); 
     112    } 
     113} 
     114{ 
     115    $param = new HermitParam; 
     116    $param->set('IN_MGR_1', '7698'); 
     117    $param->set('IN_MGR_2', '7902'); 
     118 
     119    $result = $hermit->callIN_IN_MULTI($param); 
     120    $test->ok(is_array($result)); 
     121    $test->is(count($result), 2); 
     122 
     123    $test->ok(is_array($result[0])); 
     124    $test->is(count($result[0]), 5); 
     125    { 
     126        $rs = $result[0][0]; 
     127        $test->is($rs['EMPNO'], 7499); 
     128        $test->is($rs['ENAME'], 'ALLEN'); 
     129        $test->is($rs['JOB'], 'SALESMAN'); 
     130    } 
     131    { 
     132        $rs = $result[0][1]; 
     133        $test->is($rs['EMPNO'], 7521); 
     134        $test->is($rs['ENAME'], 'WARD'); 
     135        $test->is($rs['JOB'], 'SALESMAN'); 
     136    } 
     137    { 
     138        $rs = $result[0][2]; 
     139        $test->is($rs['EMPNO'], 7654); 
     140        $test->is($rs['ENAME'], 'MARTIN'); 
     141        $test->is($rs['JOB'], 'SALESMAN'); 
     142    } 
     143    { 
     144        $rs = $result[0][3]; 
     145        $test->is($rs['EMPNO'], 7844); 
     146        $test->is($rs['ENAME'], 'TURNER'); 
     147        $test->is($rs['JOB'], 'SALESMAN'); 
     148    } 
     149    { 
     150        $rs = $result[0][4]; 
     151        $test->is($rs['EMPNO'], 7900); 
     152        $test->is($rs['ENAME'], 'JAMES'); 
     153        $test->is($rs['JOB'], 'CLERK'); 
     154    } 
     155    $test->ok(is_array($result[1])); 
     156    $test->is(count($result[1]), 1); 
     157    { 
     158        $rs = $result[1][0]; 
     159        $test->is($rs['EMPNO'], 7369); 
     160        $test->is($rs['ENAME'], 'SMITH'); 
     161        $test->is($rs['JOB'], 'CLERK'); 
     162    } 
     163} 
     164{ 
     165    $param = new HermitParam; 
     166    $param->set('IN_MGR_1', 7698); 
     167 
     168    $result = $hermit->callIN_OUT_MULTI($param); 
     169    $test->is($param->get('IN_MGR_1'), 7698); 
     170    $test->is($param->get('IN_MGR_2'), 'hello world'); 
     171 
     172    $test->ok(is_array($result[0])); 
     173    $test->is(count($result[0]), 5); 
     174    { 
     175        $rs = $result[0][0]; 
     176        $test->is($rs->EMPNO, 7499); 
     177        $test->is($rs->ENAME, 'ALLEN'); 
     178        $test->is($rs->JOB, 'SALESMAN'); 
     179    } 
     180    { 
     181        $rs = $result[0][1]; 
     182        $test->is($rs->EMPNO, 7521); 
     183        $test->is($rs->ENAME, 'WARD'); 
     184        $test->is($rs->JOB, 'SALESMAN'); 
     185    } 
     186    { 
     187        $rs = $result[0][2]; 
     188        $test->is($rs->EMPNO, 7654); 
     189        $test->is($rs->ENAME, 'MARTIN'); 
     190        $test->is($rs->JOB, 'SALESMAN'); 
     191    } 
     192    { 
     193        $rs = $result[0][3]; 
     194        $test->is($rs->EMPNO, 7844); 
     195        $test->is($rs->ENAME, 'TURNER'); 
     196        $test->is($rs->JOB, 'SALESMAN'); 
     197    } 
     198    { 
     199        $rs = $result[0][4]; 
     200        $test->is($rs->EMPNO, 7900); 
     201        $test->is($rs->ENAME, 'JAMES'); 
     202        $test->is($rs->JOB, 'CLERK'); 
     203    } 
     204} 
     205{ 
     206    $param = new HermitParam; 
     207    $param->set('param', 7900); 
     208 
     209    $result = $hermit->callINOUT_MULTI($param); 
     210    $test->is($param->get('param'), 'hello world'); 
     211    $test->is(count($result), 1); 
     212 
     213    { 
     214        $test->is(count($result[0]), 1); 
     215        $rs = $result[0][0]; 
     216        $test->is($rs->ENAME, 'JAMES'); 
     217        $test->is($rs->EMPNO, 7900); 
     218    } 
     219} 
     220{ 
     221    $param = new HermitParam; 
     222 
     223    $result = $hermit->callOUT_MULTI($param); 
     224 
     225    $test->is($param->get('param'), 'hello world'); 
     226    $test->is(count($result), 1); 
     227 
     228    $test->is(count($result[0]), 14); 
     229    $test->is($result[0][0]->MGR, 7902); 
     230    $test->is($result[0][1]->MGR, 7698); 
     231    $test->is($result[0][13]->MGR, 7782); 
     232} 
     233{ 
     234    $param = new HermitParam; 
     235    $param->set('param_1', 7499); 
     236    $param->set('param_2', 7521); 
     237    $param->set('param_3', 7654); 
     238 
     239    $result = $hermit->callNOSPEC_PARAM($param); 
     240 
     241    $test->is(count($result), 3); 
     242    { 
     243        $rs = $result[0]; 
     244        $test->is($rs[0]->EMPNO, 7499); 
     245        $test->is($rs[0]->ENAME, 'ALLEN'); 
     246    } 
     247    { 
     248        $rs = $result[1]; 
     249        $test->is($rs[0]->EMPNO, 7521); 
     250        $test->is($rs[0]->ENAME, 'WARD'); 
     251    } 
     252    { 
     253        $rs = $result[2]; 
     254        $test->is($rs[0]->EMPNO, 7654); 
     255        $test->is($rs[0]->ENAME, 'MARTIN'); 
     256    } 
     257}