php - PHP 中的 SQL Server 存储过程输出参数

标签 php sql-server stored-procedures php-mssql

我需要帮助在 PHP 中从 SQL Server 运行存储过程。 PHP 在 Unix/Linux 服务器上运行。我们无法让 OUTPUT 变量在 PHP 中返回。以下是PHP代码:

$conn = mssql_connect('server', 'user', 'pass');
    mssql_select_db('db', $conn);

    $procedure = mssql_init('usp_StoredProc', $conn);

    $tmpVar1 = 'value';
    $tmpVar2 = 'value2';

    $outVar1 = '';
    $outVar2 = '';

    mssql_bind($procedure, "@var1", $tmpVar1, SQLVARCHAR, false, false);
    mssql_bind($procedure, "@var2", $tmpVar2, SQLVARCHAR, false, false);

    mssql_bind($procedure, "@outVar1", $outVar1, SQLVARCHAR, true);
    mssql_bind($procedure, "@outVar2", $outVar2, SQLVARCHAR, true);

    mssql_execute($procedure,$conn);

    print($outVar1);
    print($outVar2);

存储过程如下所示:

    SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER proc [dbo].[usp_StoredProc]
(
    @var1 as varchar(36), 
    @var2 as varchar(10), 
    @outVar1 varchar(36) OUTPUT, 
    @outVar2 varchar(36) OUTPUT 
)
as
  select distinct 
    @outVar1 = row1, 
    @outVar2 = row2
  from table1
  where column1 = @var1
    and column2 = @var2

谁能告诉我为什么没有填充 $outVar1 和 $outVar2?非常感谢您的帮助!

最佳答案

根据 this page on PHP bugs ,你必须(强调我的):

call mssql_next_result() for each result set returned by the SP. This way you can handle multiple results.

When mssql_next_result() returns false you will have access to output parameters and return value.

关于php - PHP 中的 SQL Server 存储过程输出参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/480991/

相关文章:

javascript - 刷新后 JQuery 代码停止工作

stored-procedures - 存储过程的 SQL Server 堆栈跟踪

java - 在 Hibernate 3 中使用存储过程

sql-server - 在 SQL 存储过程中用字符串中的另一个子字符串替换特定子字符串

javascript - 单击按钮时 jQuery 返回 PHP 脚本

php - Paypal - 存储值并在处理交易后保存

c# - 在 sql server 中调用 Web 服务

c# - 将 C# MVC 应用程序连接到远程 SQL Server 数据库

sql - 如何将表从一个sql server数据库移动到另一个?

php - 在用户时区中显示 MySQL 日期时间