PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解

本篇文章是对PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的方法进行了详细的分析介绍,需要的朋友参考下
 

【PHP Source Code】:

复制代码 代码如下:

$dbh = new PDO('sqlsrv:server=连接地址;Database=数据库名', 用户名, 密码);
try {
 $procName = "P_Test_GetMixData";
 $stmt = $dbh->prepare("EXEC $procName ?, ?, ?");
 $nReturnValue = 0;
 $strReturnValue = "";
 $strSearchValue = "abandonship";
 $stmt->bindParam(1, $nReturnValue, PDO::PARAM_INT | PDO::PARAM_INPUT_OUTPUT, PDO::SQLSRV_PARAM_OUT_DEFAULT_SIZE);
 $stmt->bindParam(2, $strReturnValue, PDO::PARAM_STR | PDO::PARAM_INPUT_OUTPUT, 10);
 $stmt->bindParam(3, $strSearchValue , PDO::PARAM_STR);
 $stmt->execute();

 //获取第一个结果集.
 $rowset_1 = $stmt->fetch(PDO::FETCH_ASSOC);
 print_r($rowset_1);
 echo '<br><br>';

 //获取第二个结果集.
 $stmt->nextRowset();
 $rowset_2 = $stmt->fetch();
 print_r($rowset_2);
 echo '<br><br>';
 $stmt->nextRowset();
 // 获取两个输出类型的参数
 echo $nReturnValue.'<br><br>';
 echo $strReturnValue;
} catch (Exception $e) {
 echo $e->getMessage();
}

【SQL PROCEDURE】:

复制代码 代码如下:

/**
* 用于测试PDO调用MsSQLServer2012存储过程获取复合结果集Demo
* Code CreateBy abandonship 2012.10.11
**/
CREATE PROCEDURE [dbo].[P_Test_GetMixData](
 @Message_1 tinyint output,
 @Messgae_2 varchar(10) output,
 @SearchValue varchar(50)
) As
set nocount on

 set @Message_1 = 123
 set @Messgae_2 = 'Hi,there!This is abandonship!'
 select * from _T1 where col1 like '%'+@SearchValue+'%'
 select * from _T2 where col1 like '%'+@SearchValue+'%'
set nocount off

【一些要注意的问题】:当bindParam中存在需要输出类型的参数时,必须包含长度($length)。
【备注】:$length: An optional (integer) length of the data type. You can specify PDO::SQLSRV_PARAM_OUT_DEFAULT_SIZE to indicate the default size when using PDO::PARAM_INT or PDO::PARAM_BOOL in $data_type.

时间: 2024-12-10 03:55:35

PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解的相关文章

PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解_php技巧

[PHP Source Code]: 复制代码 代码如下: $dbh = new PDO('sqlsrv:server=连接地址;Database=数据库名', 用户名, 密码);try { $procName = "P_Test_GetMixData"; $stmt = $dbh->prepare("EXEC $procName ?, ?, ?"); $nReturnValue = 0; $strReturnValue = ""; $st

在asp中调用sql server的存储过程

在asp中调用sql server的存储过程可以加快程序运行速度,所以这些天在研究asp中利用sql server的存储过程,现总结如下,其中很多思想也是直接从chinaasp论坛中得出来,希望能给大家一些帮助.1.调用存储过程的一般方法先假设在sql server中有一存储过程dt_users:CREATE PROCEDURE [dbo].[dt_users] ASselect * from usersreturnGO第一种方法是不利用command对象,直接用recordset对象set r

实例讲解JSP调用SQL Server的存储过程

JSP调用SQL Server存储过程的实例: 创建表: CREATE TABLE [BookUser] (     [UserID] [int] IDENTITY (1, 1) NOT NULL ,     [UserName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,     [Title] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,     [Guid] [uniqu

mssql server 数据库存储过程转换成mysql数据库(1/2)

mssql server 数据库教程存储过程转换成mysql教程数据库 DELIMITER $$ DROP PROCEDURE IF EXISTS ChangeSequence$$ CREATE PROCEDURE ChangeSequence ( _sign INT ,-- 0: 上移 1:下移  TableName VARCHAR(50) ,-- 表名  ItemName VARCHAR(50) ,-- 主键字段名  ItemID INT , -- 主键ID  SortName VARCHA

mssql server 2012(SQL2012)各版本功能对比

本主题提供有关不同版本的 SQL Server 2012 所支持的功能的详细信息. Microsoft SQL Server 2012 官方简体中文版下载 SQL Server Evaluation 版具有 180 天的试用期. 有关详细信息,请参阅 SQL Server 试用软件网站. 有关 SQL Server Evaluation 版和 SQL Server Developer 版支持的功能,请参阅 SQL Server Enterprise 功能集. 若要导航到 SQL Server 技

mssql server 2012(SQL2012)各版本功能对比_MsSql

本主题提供有关不同版本的 SQL Server 2012 所支持的功能的详细信息. Microsoft SQL Server 2012 官方简体中文版下载 SQL Server Evaluation 版具有 180 天的试用期. 有关详细信息,请参阅 SQL Server 试用软件网站. 有关 SQL Server Evaluation 版和 SQL Server Developer 版支持的功能,请参阅 SQL Server Enterprise 功能集. 若要导航到 SQL Server 技

Windows Server 2012 Hyper-V故障转移集群虚拟机亲和性策略详解

今天收到一个邮件咨询如何在Windows Server 2012实现虚拟机亲和性策略, 熟悉VMware vSphere解决方案的技术宅肯定会比较熟悉一个叫做DRS的动态迁移策略, 其中可以配置VM亲和性策略控制两个虚拟机应用运行在不同的物理ESXi主机上.这个功能还是很实用的,例如如果虚拟机应用运行了一个Guest集群,那么其中一个基本需求就是让来宾虚拟机运行在不同的物理主机上,如果DRS控制策略处于性能考虑让两个来宾虚拟机运行在同一台物理主机上则集群的高可用性就失去了:另一个常见的案例是在站

WordPress中用于获取及自定义头像图片的PHP脚本详解_php技巧

get_avatar()(获取头像)get_avatar() 函数用来获取置顶邮箱或者用户的头像代码,在评论列表中非常常用. 这个函数提供一个 get_avatar 过滤器,用来过滤头像的 Html 代码(img 标签). 如果在后台 "设置" 的 "讨论" 里关闭 "显示头像选项" 则返回 False. 用法 get_avatar( $id_or_email, $size, $default, $alt ); 参数 $id_or_email (

Javascript获取图片原始宽度和高度的方法详解_javascript技巧

前言 网上关于利用Javascript获取图片原始宽度和高度的方法有很多,本文将再次给大家谈谈这个问题,或许会对一些人能有所帮助. 方法详解 页面中的img元素,想要获取它的原始尺寸,以宽度为例,可能首先想到的是元素的innerWidth属性,或者jQuery中的width()方法. 如下: <img id="img" src="1.jpg"> <script type="text/javascript"> var img