Laravel и хранимые процедуры SQL - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть хранимая процедура, которую сделал клиент. Теперь я должен получить к нему доступ и обработать данные в моем приложении laravel.

У меня нет проблем с подключением к SQL, но проблемы начинаются при передаче параметров.

Вот мой код:

$connections = DB::connection('sqlsrv')
    ->select(EXEC [stored].[procedure].[here] $param1, $param2);

Ошибка, которую я получил назад: Активный результат для запроса не содержит полей

Я искал много часов на форумах, и вот что я нашел:

$connections = DB::connection('sqlsrv')
->select(DB::raw('EXEC [stored].[procedure].[here] $param1, $param2'));

Ошибка, которую я получил: Активный результат для запроса не содержит полей.

Я установил драйвер SQL и драйвер OBDC.

Любая помощь будет высоко ценится

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

OK. Итак, я выяснил проблему.

Оказывается, клиент отправил мне переменную с xml. Насколько я понял из документации Microsoft, вы можете t pass xml as a varable because if you call the SP from an application it is gonna pass it as an array and application can t анализировать XML напрямую в массив. Вы должны сделать это самостоятельно.

Вместо этого можно передать xml как значение массива, а затем взять его оттуда.

0 голосов
/ 10 сентября 2018

Не знаю, поможет ли это, но в этом ответе предлагается вы ставите свою DB :: raw вокруг только параметров вместо EXEC stored.proc.name.

Так что вместо

 $connections = DB::connection('sqlsrv')->select(DB::raw('EXEC [stored].[procedure].[here] $param1, $param2'));

Попробуйте

 $connections = DB::connection('sqlsrv')->select('EXEC stored.proc.name' . DB::raw($param1, $param2));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...