Próbuję uzyskać wartość zwracaną z procedury składowanej SqlServer. Ale to daje błąd składni w moim Ubuntu Server, który używa FreeTDS.Wywołanie procedury składowanej SQL Server przy użyciu PHP PDO z Lumen dla zwracanej wartości daje błąd składni
SQLSTATE[HY000]: General error: 20018 Incorrect syntax near '0'. [20018] (severity 15) [(null)]
Poniżej jest mój kod:
$stateId = 1;
$testData = 0;
$retVal = 0;
$pdo = DB::connection(env('DBCONNECTION'))->getPdo();
$stmt = $pdo->prepare('EXEC ? = GetMyCities_sp @StateID = ?, @TestData = ?');
$stmt->bindParam(1, $retVal, \PDO::PARAM_INT,20);
$stmt->bindParam(2, $stateId, \PDO::PARAM_INT);
$stmt->bindParam(3, $testData, \PDO::PARAM_INT | \PDO::PARAM_INPUT_OUTPUT, 20);
$result_status = $stmt->execute();
$resultSet = $stmt->fetchAll(\PDO::FETCH_OBJ);
print_r($resultSet);
echo "<br />";
$stmt->nextRowset();
echo "Return value is ".$retVal;
Te same działa dobrze w moim komputerze Windows. Masz pojęcie, co jest nie tak w kodzie?
Widzieliście to? https://bugs.php.net/bug.php?id=58514 –
Tak, ale nie jestem pewien, czy te dwa są dokładnie takie same. Dla mnie wyjątek jest rzucany, param jest we właściwym miejscu, ale pokazujący błąd składni podczas wykonywania go. – Beniston
symbole zastępcze mogą reprezentować tylko VALUES, a nie słowa kluczowe/identyfikatory. –