Как выполнить хранимую процедуру из Laravel
Мне нужно выполнить хранимую процедуру после того, как моя форма отправит данные. У меня хранимая процедура работает так, как я хочу, и моя форма работает правильно. Я просто не знаю инструкции для выполнения sp из laravel 5.
Это должно быть что-то вроде этого: выполните my_stored_procedure. но я, кажется, не могу найти ничего подобного в Интернете.
8 answers
Попробуйте что-нибудь подобное
DB::select('exec my_stored_procedure("Param1", "param2",..)');
Или
DB::select('exec my_stored_procedure(?,?,..)',array($Param1,$param2));
Попробуйте это для без параметров
DB::select('EXEC my_stored_procedure')
Вы также можете сделать это:
DB::select("CALL my_stored_procedure()");
Для Ларавеля 5.4
DB::select(DB::raw("exec my_stored_procedure"));
Если вы хотите передать параметры:
DB::select(DB::raw("exec my_stored_procedure :Param1, :Param2"),[
':Param1' => $param_1,
':Param2' => $param_2,
]);
Для Laravel 5.5
DB::select('call myStoredProcedure("p1", "p2")');
Или
DB::select('call myStoredProcedure(?,?)',array($p1,$p2));
Нет параметра
DB::select('call myStoredProcedure()')
Запуск хранимой процедуры Microsoft SQL Server (MS SQL Server) с использованием платформы PHP Laravel. Если вы пытаетесь запустить SP с использованием модели Laravel, то вы можете использовать следующие два подхода.
$submit = DB::select(" EXEC ReturnIdExample ?,?", array( $paramOne ,$paramTwo ) );
$submit = DB::select(" EXEC ReturnIdExample $paramOne,$paramTwo ");
Если вы передаете параметр Varchar, используйте следующее:
$submit = DB::select(" EXEC ReturnIdExample '$paramOne', '$paramTwo' ");
Если вы просто передаете параметр, который имеет значение INT или BIGINT, то это должно сработать, и вы можете получить результат от SP:
$submit = DB::select(" EXEC ReturnIdExample $paramOne,$paramTwo ");
После выполнения хранимой процедуры значения будут присутствовать в $submit
в виде массива, вам нужно пройти по нему и получить доступ к необходимым столбцам.
foreach($submit as $row)
{
echo $row->COLUMN1;
echo $row->COLUMN2;
echo $row->COLUMN3;
}
Для версии 5.5 используйте CALL
:
return DB::select(DB::raw('call store_procedure_function(?)', [$parameter]))
app('db')->getPdo()->exec('exec my_stored_procedure');
Рабочий код с Laraval 5.6,
DB::select('EXEC my_stored_procedure ?,?,?',['var1','var2','var3']);