|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #50555 PDO_DBLIB: Cannot retrieve output parameter from stored procedure
Submitted: 2009-12-22 22:09 UTC Modified: 2017-09-07 21:50 UTC
Avg. Score:4.8 ± 0.5
Reproduced:27 of 27 (100.0%)
Same Version:3 (11.1%)
Same OS:4 (14.8%)
From: david dot wright at opticsplanet dot com Assigned:
Status: Open Package: PDO DBlib
PHP Version: 5.3.1 OS: 2.6.24-24-server
Private report: No CVE-ID:
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
Block user comment
Status: Assign to:
Bug Type:
From: david dot wright at opticsplanet dot com
New email:
PHP Version: OS:


 [2009-12-22 22:09 UTC] david dot wright at opticsplanet dot com
I cannot retrieve an output parameter from a stored procedure (in my case on SQL Server 2005--am using PDO_DBLIB.

Reproduce code:
PHP Code:
/** SNIP. Set up a valid $db here! **/
$return_value = 999;
$sth = $db->prepare("EXEC dbo.opsp_Test ?");
$sth->bindParam(1, $return_value, PDO::PARAM_STR |
echo "$return_value\n";

Stored Procedure
	@TheOutputValue int OUTPUT
	SET @TheOutputValue = 11

Expected result:
output should be: 11

Actual result:
Output is 999 ($return_value unchanged)


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2010-04-09 10:50 UTC] a at exampl dot com
For fucks sake would anybody already fix this? It's not the only report about this issue in the tracker.
 [2010-09-18 21:34 UTC]
This requires that pdo_dblib pass params using the RPC mechanisms and also to implement it's own driver level binding instead of relying on the PDO param binding. This will require a rewrite of most of the statement object.

Rest assured, it is being worked on but may take some time.
 [2013-06-12 04:05 UTC]
-Summary: Cannot retrieve output parameter from stored procedure +Summary: PDO_DBLIB: Cannot retrieve output parameter from stored procedure
 [2014-01-01 12:49 UTC]
-Package: PDO related +Package: PDO DBlib
 [2014-05-17 09:05 UTC] eugene at bcp dot im
This bug/problem whatever you want to call it is not limkted to DBlib - happening on ODBC and SqlServer... Is anyone looking into this??
 [2016-02-12 13:14 UTC] g at thelettereyediversity dot co dot za
Working with the latest PHP 5.6 and MySQL 5.6.22 and can confirm this is still a bug and affects the PDO library.
 [2016-02-16 11:12 UTC] craig_carnell at hotmail dot com
I am experiencing the same issue with PHP 7.0.3, pdo_dblib and MSSQL 2008. Unfortunately I am having to resort to pdo_dblib due to the removal of mssql* functions.

Here is my code:

$db = new PDO('dblib:host=myhost:1433;dbname=mydb', 'username', 'password');
$sql = "EXEC Stock_Level @myId=:myId, @StockLevel=:StockLevel";
$stmt = $db->prepare($sql);
$var = '12345';
$var2 = null;
$stmt->bindParam(":myId", $var, PDO::PARAM_STR);
$stmt->bindParam(":StockLevel", $var2, PDO::PARAM_INT|PDO::PARAM_INPUT_OUTPUT);

if(!$stmt->execute()) {
    echo "\nPDO::errorCode(): ", $stmt->errorCode();

echo "var 2 = " . $var2 . PHP_EOL;

This is a big problem!
 [2016-09-12 22:01 UTC]
Alternate test case in #70274.
 [2017-09-06 08:31 UTC] php dot net at itsacon dot net
This bug still persists in PHP 7.1.9

And since PHP 7.x has dropped support for the old mssql extension, this is now a very important bug, since it means there is no way to connect a Linux/BSD server to a Microsoft SQL server and have full stored procedure functionality.

I have tried both PDO_ODBC and PDO_DBLIB, different versions of FreeTDS (both with iODBC and UnixODBC backends), and I've found nothing that works for stored procedures with OUTPUT parameters.
 [2017-09-07 21:50 UTC]
You should be able to write a query where you:
 - DECLARE a var
 - run the sproc, using the var as the output parameter
 - SELECT the var

Not as elegant as being able to use bindParam, but it's a workaround.
PHP Copyright © 2001-2017 The PHP Group
All rights reserved.
Last updated: Tue Aug 29 15:01:52 2017 UTC