PDO & lt; — & gt; SQL Server exec (в Laravel) возвращает пустой массив

PHP, Laravel, вызов

$db->select("EXEC [dbo].[sp_StoredProc1] 1, 3, 1, '2016-06-12 00:00:00', '2016-09-12 00:00:00'");

РЕЗУЛЬТАТ — ПУСТОЙ МАРШРУТ !!!

Вызов той же функции через SQL Server Management Studio:

EXEC [dbo].[sp_StoredProc1] 1, 3, 1, '2016-06-12 00:00:00', '2016-09-12 00:00:00'

РЕЗУЛЬТАТ — ДЕЙСТВИТЕЛЬНЫЙ СТОЛ.

Любая идея, почему это может произойти, горячо ценится

3

Решение

Причина этого — ОШИБКА в PHP PDO для MS SQL Server.
Исключение не выбрасывается, несмотря на то, что происходит.
Очень похожий случай изображен здесь:
http://www.sqlservercentral.com/Forums/Topic1754869-392-1.aspx

Так что это своего рода двухступенчатые проблемы:

  1. Когда параметры хранимой процедуры не установлены явно в NULL / NOT NULL, они наследуются, что вызывает исключение …
  2. который НЕ показан PDO (ошибка в PDO Laravel).

Кроме того, вы можете увидеть эту тему
PHP — PDOException не генерируется при ошибке, возвращается пустой массив (SQL Server)
Мой коллега провел лучшее расследование по этому вопросу, чем я :)))

2

Другие решения

Попробуй это:

DB::select(DB::raw("EXEC [dbo].[sp_StoredProc1] 1, 3, 1, '2016-06-12 00:00:00', '2016-09-12 00:00:00'");

Вы также можете попытаться увидеть, что вы получите, когда вы, но оба DB::select(...) часть и только DB::raw("...") участие в dd() умирают и бросают функцию;

0

По вопросам рекламы [email protected]