Как выполнить хранимую процедуру из Laravel
Мне нужно выполнить хранимую процедуру после того, как моя форма отправит данные. У меня хранимая процедура работает так, как я хочу, и у меня есть моя форма, работающая должным образом. Я просто не знаю утверждения, чтобы выполнить sp из laravel 5.
это должно быть примерно так: выполнить my_stored_procedure. но я не могу найти ничего подобного в Интернете.
Ответы
Ответ 1
Попробуйте что-то вроде этого
DB::select('exec my_stored_procedure("Param1", "param2",..)');
или
DB::select('exec my_stored_procedure(?,?,..)',array($Param1,$param2));
Попробуйте это без параметров
DB::select('EXEC my_stored_procedure')
Ответ 2
Вы также можете сделать это:
DB::select("CALL my_stored_procedure()");
Ответ 3
для Laravel 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,
]);
Ответ 4
для Laravel 5.5
DB::select('call myStoredProcedure("p1", "p2")');
или
DB::select('call myStoredProcedure(?,?)',array($p1,$p2));
нет параметров
DB::select('call myStoredProcedure()')
Ответ 5
Выполнение хранимой процедуры Microsoft SQL Server (MS SQL Server) с использованием среды PHP Laravel.
Если вы пытаетесь запустить SP с использованием Laravel Model, вы можете использовать следующие два подхода.
$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;
}
Ответ 6
Рабочий код с Laraval 5.6,
DB::select('EXEC my_stored_procedure ?,?,?',['var1','var2','var3']);
Ответ 7
Для версии 5.5 используйте CALL
:
return DB::select(DB::raw('call store_procedure_function(?)', [$parameter]))
Ответ 8
app('db')->getPdo()->exec('exec my_stored_procedure');
Ответ 9
После долгих исследований это работает:
DB::connection("sqlsrv")->statement('exec Pro_Internal_Transfer_Note_post @mvoucherid='.$VMID);