Microsoft® ODBC Driver 11 für SQL Server® unter RedHat Linux mit PHP - Fehler beim Binden von Parametern mit PDO für gespeicherte Prozeduren

Ohne Parameter funktioniert es einwandfrei, aber wenn Parameter vorhanden sind, wird der folgende Fehler ausgegeben:

SQLSTATE [42000]: Syntaxfehler oder Zugriffsverletzung: 8018 [Microsoft] [ODBC-Treiber 11 für SQL Server] [SQL Server] Ungültiger Parameter 4 (''): Datentyp 0x23 ist ein veraltetes großes Objekt oder LOB, aber markiert als Ausgabeparameter. Veraltete Typen werden als Ausgabeparameter nicht unterstützt. Aktuelles großes Objekt t verwenden (SQLExecute [8018] unter /builddir/build/BUILD/php-5.3.3/ext/pdo_odbc/odbc_stmt.c:254)

Dies läuft unter Centos 6, ODBC-Treiber 11 für SQL Server® - RedHat Linux, unixODBC-2.3.0, MSSQL Server 2008 R2

Verbindungszeichenfolge:

    $con = new PDO("odbc:dsnName", 'sa','saa');
    $con->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
    $con->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_ASSOC); 

Verwendete gespeicherte Beispielprozedur:

    $stmt = $con->prepare( "SET NOCOUNT ON DECLARE  @return_value int

    EXEC    @return_value = [sp_insert_into_t_contact_test]
    @paravalue = ?

    SELECT  'returnV' = @return_value");
    $stmt->bindParam(1, $v1 = 5, PDO::PARAM_STR, 100);
    $stmt->execute(); 
    $return =$stmt->fetch();
    echo $return['returnV'];

Einfache gespeicherte Prozedur, um "123" zurückzugeben

    [dbo].[sp_insert_into_t_contact_test]
       @paravalue varchar(100)
    AS
    return 123

Zusätzliche Information -

odbc.ini Datei -

   [dsnName]
   Driver=SQL Server Native Client 11.0
   Description=My Sample ODBC Database Connection
   Trace=Yes
   Server=192.168.2.60
   Port=1433
   Database=NSCDB_3

odbcinst.ini

  [SQL Server Native Client 11.0]
  Description=Microsoft ODBC Driver 11 for SQL Server
  Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-11.0.so.2270.0
  Threading=1
  UsageCount=1

Antworten auf die Frage(1)

Ihre Antwort auf die Frage