Как выполнить хранимую процедуру из 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);