【发布时间】:2009-01-26 19:19:40
【问题描述】:
我需要帮助在 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 没有被填充?非常感谢您的帮助!
【问题讨论】:
-
mssql_get_last_message() 有什么有用的信息吗?
-
mssql_get_last_message() 返回“已将数据库上下文更改为“dbName””
-
你试过36个空格的字符串吗?
-
是的,我们已经尝试在 mssql_bind 调用中指定长度。还是没有运气。
-
不,给它一个定制的字符串:$outVar2 = ' ...36 个空格... ';
标签: php sql-server stored-procedures