Home Backend Development PHP Tutorial PHP得到mssql的存储过程的输出参数功能实现_PHP

PHP得到mssql的存储过程的输出参数功能实现_PHP

Jun 01, 2016 pm 12:09 PM
stored procedure

在开发过程中可能会遇到无法取得MSSQL存储过程的输出参数,很多朋友都不知道该怎么办,本文将详细介绍PHP得到mssql的存储过程的输出参数功能实现,需要了解的朋友可以参考下
复制代码 代码如下:

$conn=mssql_connect("127.0.0.1","user","passwd");
mssql_select_db("mydb");
$stmt=mssql_init("pr_name",$conn);//
$a=50001;
mssql_bind($stmt,"RETVAL",$val,SQLVARCHAR); //用于直接返回return -103此类的值。
mssql_bind($stmt,"@outvar",$b,SQLVARCHAR,true);//用于返回在存储过程中定义的输出参数
mssql_bind($stmt,"@invar",$a,SQLINT4);
$result = mssql_execute($stmt,true);//不能返回结果集,只能得到输出参数
//$result = mssql_execute($stmt,false); //返回结果集
//$records=mssql_fetch_array($result);
//print_r($records);
//mssql_next_result($result);下一个结果集,当等于FALSE的时候下一个就是输出参数
echo $b;
echo $val;
?>

下面这些是从别的地方看到的。
小麻烦
我们按照惯例使用了一个MS Sql Server的存储过程procA,它给出了一个输出参数nReturn,
而且返回了一个结果集。
在如何让PHP调用这个procA的时候,我们遭遇了一点小麻烦。
鱼肉和熊掌不可兼得:
我们本来希望这样的代码能够既得到输出参数,又得到返回的结果集:
复制代码 代码如下:
// 初始化要传进存储过程的参数们:
$nYear = 2004;
$nPageSize = 20;
$nPageNo = 1;
// Initializes a stored procedure:
$stmt = mssql_init("proc_stat_page", $db_mssql->Link_ID);
// 绑定输入参数:
mssql_bind($stmt, "@nReturn", $nReturn, SQLINT4, TRUE);
mssql_bind($stmt, "@nYear", $nYear, SQLINT4);
mssql_bind($stmt, "@nPageSize", $nPageSize, SQLINT4);
mssql_bind($stmt, "@nPageNo", $nPageNo, SQLINT4);
// 执行存储过程,得到QueryID:
$db_mssql->Query_ID = mssql_execute($stmt,false);

虽然得到了结果集,但是,这样$nReturn参数是拿不到输出参数的。
如果把最后一句话改为:
$db_mssql->Query_ID = mssql_execute($stmt,true);
输出参数倒是拿到了,结果集又没有了。
好像是一个鱼肉和熊掌不可兼得的样子。
难道PHP连这个都做不到?PHP手册中也没有讲这个问题。
来自于PHP维护者的解释:
原本我们这种调用办法是PHP 4.3版本之前肯定是支持的。
“但是,自从PHP 4.3版本之后,”他们说,“为了能够兼容存储过程返回多个结果集,PHP改变这个特性。”

“如果你不需要结果集,你应该设置mssql_execute的第二个可选参数为TRUE,这样mssql_execute方法之后你就可以得到输出参数了。”

“如果你需要返回的结果集们,你应该为每一个结果集调用一次mssql_next_result。在最后一个结果集返回之后,你再调用mssql_next_result就会得到返回值FALSE,这时候,你就可以访问输出参数了。”
解决:
在最后我们补上一句话
// After the last result has been returned the return value will have the value returned by the stored procedure.
mssql_next_result($db_mssql->Query_ID);
立刻,魔法生效了:
PHP填充了正确的输出参数到$nRetVal里。

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Steps and precautions for implementing batch updates using Oracle stored procedures Steps and precautions for implementing batch updates using Oracle stored procedures Mar 08, 2024 pm 04:12 PM

Title: Steps and Precautions for Implementing Batch Updates by Oracle Stored Procedures In Oracle database, stored procedures are a set of SQL statements designed to improve database performance, reuse code, and enhance security. Stored procedures can be used to update data in batches. This article will introduce how to use Oracle stored procedures to implement batch updates and provide specific code examples. Step 1: Create a stored procedure First, we need to create a stored procedure to implement batch update operations. The following is how to create a stored procedure

How to delete stored procedure in MySQL How to delete stored procedure in MySQL Sep 05, 2023 am 10:25 AM

MySQL methods for deleting stored procedures include using the DROP PROCEDURE statement, using MySQL Workbench, and using command line tools. Detailed introduction: 1. Use the DROP PROCEDURE statement. The steps are to first open the MySQL client or use any tool that supports MySQL, then connect to your MySQL database, and finally execute the following SQL statement to delete the stored procedure; 2. Use MySQL Workbench to delete Stored procedures and so on.

Oracle stored procedure: Implementation method to determine whether a table exists Oracle stored procedure: Implementation method to determine whether a table exists Mar 08, 2024 pm 09:18 PM

Stored procedures in Oracle database are a specific type of stored procedures used to execute a series of SQL statements and data operations in the database. In actual database development work, sometimes we need to determine whether a certain table exists in the database, so that we can do some judgment and logical processing in the storage process. Below we will introduce how to implement the method of determining whether a table exists in Oracle database, and provide specific code examples. First, we can use the system table user_tables or all_t

Implementation principles and applications of Golang stored procedures Implementation principles and applications of Golang stored procedures Feb 22, 2024 pm 04:57 PM

Implementation Principles and Applications of Golang Stored Procedures Stored procedures are precompiled programs that are stored in relational databases and can be called by applications. They can effectively reduce the cost of network transmission of data and improve the execution efficiency of the database. Although Golang does not directly support stored procedures, you can simulate the functions of stored procedures by using SQL statements. This article will introduce the principles and applications of implementing stored procedures in Golang, and provide specific code examples. 1. The implementation principle of Golang stored procedure is in Gol

How to write custom stored procedures and functions in MySQL using C# How to write custom stored procedures and functions in MySQL using C# Sep 22, 2023 am 09:42 AM

How to write custom stored procedures and functions in MySQL using C# Introduction: MySQL is a widely used open source database management system, and C# is a commonly used object-oriented programming language. During the development process, we often need to use database stored procedures and functions to improve code reusability and performance. This article will introduce how to use C# to write custom stored procedures and functions in a MySQL database, and provide specific code examples. 1. Stored procedures A stored procedure is a set of SQL statements that perform specific tasks.

Detailed comparison and advantage analysis of Oracle stored procedures and functions Detailed comparison and advantage analysis of Oracle stored procedures and functions Mar 03, 2024 am 10:24 AM

Title: Detailed comparison and advantage analysis of Oracle stored procedures and functions. In Oracle database, stored procedures and functions are two important database objects. They can both be used to encapsulate a series of SQL statements and logic to improve the efficiency and complexity of data operations. Usability. This article will compare the characteristics of Oracle stored procedures and functions in detail, as well as their respective advantages, and provide specific code examples. Stored procedure A stored procedure is a set of SQL statements and PL/SQL code logic that are pre-written and stored in the database.

Performance Optimization Strategy for Oracle Stored Procedure Batch Update Performance Optimization Strategy for Oracle Stored Procedure Batch Update Mar 08, 2024 pm 09:36 PM

Performance Optimization Strategies for Batch Updates of Oracle Stored Procedures In Oracle database, a stored procedure is a database object used to process data logic or perform specific tasks. It can provide certain performance optimization strategies, especially when updating data in batches. Updating data in batches usually involves a large number of row-level operations. In order to improve performance and efficiency, we can adopt some strategies and techniques to optimize the performance of stored procedures. The following will introduce some performance optimization strategies for batch updates of Oracle stored procedures and provide specific code examples.

How to write efficient stored procedures using Golang How to write efficient stored procedures using Golang Mar 22, 2023 pm 02:24 PM

Golang is a powerful programming language that can easily implement stored procedures. In this article, we will introduce how to write efficient stored procedures using Golang and the benefits of using them in your projects.

See all articles