php执行多个存储过程
2014年3月18日更新:
从以前的使用原生代码来看,只需要将结果集关闭即可,即 $this -> queryID -> close(); 。
// 使用mysqli方式,修改DbMysqli.class.php,将query函数改为: public function query($str) {$this -> initConnect(false);if (!$this -> _linkID) {return false;}$this -> queryStr = $str;//释放前次的查询结果if ($this -> queryID)$this -> free();N('db_query', 1);// 记录开始执行时间G('queryStartTime');$this -> queryID = $this -> _linkID -> query($str);// 对存储过程改进$ret = array();$this -> debug();if (false === $this -> queryID) {$this -> error();return false;} else {$this -> numRows = $this -> queryID -> num_rows;$this -> numCols = $this -> queryID -> field_count;$ret = $this -> getAll();}//主要将这段移动了一下,关闭结果集if ($this -> _linkID -> more_results()) {while (($res = $this -> _linkID -> next_result()) != NULL) {$this -> queryID -> close();}}return $ret ; }
下面就可以调用多个存储过程,或许执行其他SQL操作,可以直接使用M函数
在使用thinkphp的时候发现执行多个存储过程只能执行第一个,看了一下源码Driver/Db/DbMysql.class,已经对存储过程进行了一定处理,但是不知道为什么运行不了。
用原生代码解决了问题(下面是部分代码):
1 $db = new mysqli(C("DB_HOST"), C("DB_USER"), C("DB_PWD"), C("DB_NAME")); 2 if (mysqli_connect_errno()) 3 throw_exception(mysqli_connect_error()); 4 5 $t2 = microtime(true); 6 echo "数据库连接用时:" . (($t2 - $t1)) . "s <br />"; 7 8 $arr = array(); 9 // 1st Query 10 $procedure = "call p1()"; 11 $result = $db->query($procedure); 12 if ($result) { 13 // Cycle through results 14 while ($row = $result->fetch_object()) { 15 //添加到对象数组 16 $arr[] = $row; 17 } 18 // 这里是最重要的,需要将游标移动下一个结果集 19 $result->close(); 20 $db->next_result(); 21 } 22 $procedure = "call p2()"; 23 $result = $db->query($procedure); 24 if ($result) { 25 // Cycle through results 26 while ($row = $result->fetch_object()) { 27 //添加到对象数组 28 $arr[] = $row; 29 } 30 // 这里是最重要的,需要将游标移动下一个结果集 31 $result->close(); 32 $db->next_result(); 33 }
php执行多个存储过程相关推荐
- linux脚本调用db2存储过程,LINUX定时执行含有DB2存储过程的SHELL脚本
<LINUX定时执行含有DB2存储过程的SHELL脚本>由会员分享,可在线阅读,更多相关<LINUX定时执行含有DB2存储过程的SHELL脚本(6页珍藏版)>请在人人文库网上搜 ...
- oracle 杀死过程,ORACLE-Kill 杀死正在执行的Oracle存储过程和死锁语句
1.找到正在执行的存储过程的 sid ,serial# select b.sid,b.SERIAL#,a.OBJECT, 'alter system kill session ' || ''' ...
- mysql 存储过程执行慢_MySQL存储过程因为字符集不同导致执行慢
业务反馈线上一个存储过程执行很慢,导致业务超时较多,而存储过程比较简单,就是一个简单的判断逻辑然后delete一条记录,而且delete语句是有索引的. 表结构如下: CREATE TABLE `ta ...
- SQL查询语句执行速度快,存储过程执行慢
今天一个生成10w条数据的存储过程执行了95s,但是单独执行SQL语句只需要28s,查资料后发现原来这是存储过程的机制导致的,也就是传说中的参数嗅探 网上的一段话: (1)可能是发生了参数嗅探,第一次 ...
- oracle字段公式怎么执行,Oracle 在存储过程或函数中执行字符串sql PDF 下载
主要内容: 有时,我们需要在存储过程或函数中根据条件拼凑一些sql字符串语句,然后再执行拼凑后的sql字符串,如何做到呢? 参考以下代码: FUNCTION CALCULATE_TARGET_SCOR ...
- plsql 查询存储过程死锁语句_ORACLE-Kill 杀死正在执行的Oracle存储过程和死锁语句...
存储过程 1.找到正在执行的存储过程的 sid ,serial# select b.sid,b.SERIAL#,a.OBJECT, 'alter system kill session ' | ...
- 使用 ODBC .NET 提供程序和 Visual C# .NET 执行 SQL 参数化存储过程
http://support2.microsoft.com/kb/310130/zh-cn 此分步指导文章描述如何使用 ODBC .NET 托管提供程序和 Visual C# .Net 调用参数化 S ...
- org.apache.commons.dbutils.QueryRunner 执行sqlserver的存储过程
执行不带输出参数的存储过程与 执行普通update sql没有什么区别,直接调用即可: 示例代码: public Boolean startResidentialInfoStatistics(Str ...
- hibernate4调用mysql存储过程_Hibernate4.x执行mysql的存储过程
现在网上使用JDBC的方式执行,大概情况如下(代码摘自http://blog.csdn.net/lanbosan/article/details/2429917): Connection con ...
最新文章
- 一起做激光SLAM:ICP匹配用于闭环检测
- java 国际化 properties_java Properties 读取文件,国际化
- git-ssh-keygen
- 1575 Gcd and Lcm
- cad在布局怎么调比例_大神们都在用的9个CAD制图技巧,你会用几个?
- I2C总线信号时序总结
- 力扣459. 重复的子字符串(KMP,JavaScript)
- Cabin, 手机端的Kubernetes管理app
- Docker与容器安全
- 360网神防火系统 配置端口映射_IIS配置证书端口443无法访问
- 数据结构链表(C语言实现)
- iPone实现快速切换表情输入法?
- ZeroC Ice Hello World
- 初识Modern UI for WPF
- 浅夏,盈一眸清凉,捻一指馨香
- java 求任意输入半径,圆的周长和面积。
- 苹果官网下架iPhone 8;破解百度网盘的Pandownload开发者被捕;三大运营商年内上线5G消息 | EA周报...
- Ubuntu16.04黑屏问题·搜狗拼音输入法无法显示·重装失败·修改密码失败·caffe安装错误
- docker目录 /var/lib/docker/containers 日志清理
- win10安装c语言不兼容,手把手还原win10系统visual c++不兼容的技巧
热门文章
- java获取返回xml节点里的值,关于用java读取xml中节点的值解决方案
- php开发神器,PHP开发神器vim
- KXD黑夜模式流星滑落个人主页HTML源码
- QQ红包源码 大转盘抽奖源码下载 微信红包源码
- 一个 WordPress 安装,多个博客
- Magento: 自定义用户登录导向页面 Redirect Customer to Previous Page After Login
- Linux DVD 转 MP4 – HandBrake – Copy a DVD to MP4 or MKV file
- Magento: 解决 Bootstrap 3 与prototype并用的时候, 下拉菜单消失的问题 Bootstrap 3 dropdown menu dis...
- PHP结合HTML5使用FormData对象提交表单及上传图片
- Python_51job爬虫