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

eri*_*ham 6 php sql-server stored-procedures

我需要帮助从PHP中的SQL Server运行存储过程.PHP在Unix/Linux服务器上运行.我们无法在PHP中返回OUTPUT变量.以下是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);
Run Code Online (Sandbox Code Playgroud)

存储过程如下所示:

    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
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我为什么$ outVar1和$ outVar2没有被填充?非常感谢您的帮助!

Cad*_*oux 0

我怀疑这会导致您的问题,但您为什么要使用DISTINCT

这只是一个代码味道 - 任何时候你看到这一点,都意味着有可能返回用 DISTINCT“处理”的重复项,并且可能需要研究为什么会返回重复项。