ホームページ  >  記事  >  バックエンド開発  >  PHPでストアドプロシージャの戻り値を実行することについて質問がありますか?

PHPでストアドプロシージャの戻り値を実行することについて質問がありますか?

WBOY
WBOYオリジナル
2016-06-13 12:05:24814ブラウズ

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 拡張機能は 1 つの結果セットしか受け入れられません
読み取り時には、
mysqli_next_result
PDOStatement::nextRowset
を使用する必要があります。結果セット ポインター
注: 結果セットが空に読み取られない限り。再度クエリを実行することはできません

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。