Heim  >  Artikel  >  Backend-Entwicklung  >  php 执行存储过程返回值得有关问题?

php 执行存储过程返回值得有关问题?

WBOY
WBOYOriginal
2016-06-13 12:05:24773Durchsuche

php 执行存储过程返回值得问题???
我的mysql存储过程代码如下
怎么样在php中执行时得到对应的返回值???

declare vCNC_ID int;<br />  set vCnt=0;<br />  SELECT count(trlm.TRAVELER_ID) into vCnt from tr_traveler_lot_master trlm<br />   WHERE trlm.ORGANIZATION_ID=pOrg_ID AND trlm.SITE_ID=pSite_id<br />     AND trlm.TRAVELER_CODE=pTraveler_code;<br />  IF ISNULL(vCnt)=0 and vCnt>0 THEN<br />     SELECT trlm.TRAVELER_ID into vTraveler_id from tr_traveler_lot_master trlm<br />      WHERE trlm.ORGANIZATION_ID=pOrg_ID AND trlm.SITE_ID=pSite_id<br />        AND trlm.TRAVELER_CODE=pTraveler_code;<br />  ELSE<br />      SELECT '错误的托盘ID.....!';<br />      -- SELECT 'No Traveler ID issued.....!';<br />      LEAVE proc_main;<br />  END IF;<br />  set vCnt=0;<br />  SELECT count(trll.TRAVELER_ID) into vCnt from tr_traveler_lot_logging trll<br />   WHERE trll.ORGANIZATION_ID=pOrg_ID AND trll.SITE_ID=pSite_id<br />     AND trll.TRAVELER_ID=vTraveler_id and TRANSACTION_CODE<9;<br />  IF ISNULL(vCnt)=0 and vCnt>0 THEN<br />     SELECT '托盘ID已经开始.....!';<br />     -- SELECT 'Traveler ID had been started.....!';<br />     LEAVE proc_main;<br />  ELSE<br />     SELECT CNC_ID into vCNC_ID FROM tr_cnc_master tcm where tcm.ORGANIZATION_ID=pOrg_id and tcm.CNC_CODE= pCNC_CODE;<br />  END IF;  -- Second Count<br />--  Check CNC is in running by other Tray<br />  set vCnt=0;<br />  SELECT count(trll.TRAVELER_ID) into vCnt from tr_traveler_lot_logging trll<br />   WHERE trll.ORGANIZATION_ID=pOrg_ID AND trll.SITE_ID=pSite_id<br />     AND trll.CNC_ID=vCNC_ID and TRANSACTION_CODE<9;<br />  IF ISNULL(vCnt)=0 and vCnt>0 THEN<br />     SELECT 'ABCID已经开始被其他托盘使用.....!';<br />     -- SELECT 'CNC ID had been started by other tray.....!';<br />     LEAVE proc_main;<br />  END IF;  --  Check CNC is in running by other Tray<br />  -- Check CNC load Program or not<br />  set vCnt=0;<br />  SELECT count(tch.CNC_ID) into vCnt from  tr_cnc_header tch<br />   WHERE tch.ORGANIZATION_ID=pOrg_ID AND tch.CNC_ID=vCNC_ID;<br />  IF ISNULL(vCnt)=0 and vCnt>0 THEN<br />     SELECT CNC_ID into vCNC_ID FROM tr_cnc_master tcm where tcm.ORGANIZATION_ID=pOrg_id and tcm.CNC_CODE= pCNC_CODE;<br />     call Traveler_LogCreation (pOrg_id,vTraveler_id,pSite_ID,1,sysdate(),vCNC_id,pUser);<br />  ELSE<br />     SELECT '无 ABC 程序配置.....!';<br />     -- SELECT 'No CNC program loaded.....!';<br />     LEAVE proc_main;<br />  END IF;  -- Third Count     <br />  SELECT 'Ok';<br />end proc_main

------解决方案--------------------
你这个存储过程会返回多个结果集吧?看不大清楚
如果是,那么请用 mysqli 扩展或 PDO 类,mysql 扩展只能接受一个结果集
读取时需分别用
mysqli_next_result
PDOStatement::nextRowset 
移动结果集指针
注意:只要结果集没有读空。就不能重新查询

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn