我有一个问题,成功运行程序后显示存储过程的输出...我希望每个人都可以帮助我....这里我的存储过程..
$sql = "EXEC [dbo].[sp_mRetailerRegInfo_Add] '$var1','$var2','$var3','$var4','',''";
我的SP中的示例数据
EXEC sp_mRetailerRegInfo_Add 'asdf','asdf','bacc@abc.com','123', @RetailerId output, @ErrorCode output
这是我的示例代码.i可以运行该程序,但它不显示输出
<?php
$serverName = "localhost";
$connectionInfo = array( "Database"=>"db", "UID"=>"user", "PWD"=>"pass");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
echo "Connection established.<br />";
}else{
echo "Connection could not be established.<br />";
die( print_r( sqlsrv_errors(), true));
}
//-----------------------------------------------
// Perform operations with connection.
//-----------------------------------------------
$sql = "EXEC [dbo].[sp_mRetailerRegInfo_Add] '$var1','$var2','$var3','$var4','',''";
$result = sqlsrv_query($conn, $sql);
if (!$result) {
echo 'Your code is fail.';
}
else {
echo 'Success!';
echo $result;
}
?>
输出将是这样的(ID0001),但我得到像这样的输出
已建立连接。
成功!资源ID#3
答案 0 :(得分:1)
使用存储过程,您将使用要在过程中为其分配值的OUTPUT
参数。该过程完成后,您将访问该参数并使用它所需的内容。
您可以阅读MSDN网站上的Return Data from a Stored Procedure,以了解如何编写存储过程。
您需要查看this already answered question,其中提供了有关如何从OUTPUT
访问PHP
参数的详细信息。你会想要第二个答案:
执行的第二个参数需要是真的,而不是conn。这个 应该工作:
$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,true); print($outVar1); print($outVar2);
如果您可以提供存储过程的定义,我可以更详细地说明如何设置PHP
来电。
答案 1 :(得分:0)
嗯,这是可能的。有一个名为mssql_bind
的函数用于将值绑定到PHP变量
调用SP并存储输出。试试这样的事情
DECLARE @appout int; -- variable to hold the data returned by SP.
EXEC checkFollowing 10,20, @output = @appout OUTPUT; -- This is how i will call a SP.
@appout - will hold the data returned by the procedure.
所以你可以执行输出参数,如下所示:
$outVar1 = '';
mssql_bind($procedure, "@appout", $outVar1, SQLVARCHAR, true);
mssql_execute($procedure,true);
print($outVar1);