フォームがデータを送信した後、ストアドプロシージャを実行する必要があります。ストアドプロシージャが思いどおりに機能し、フォームが適切に機能しています。 laravel 5.からspを実行するステートメントがわからないだけです。
my_stored_procedureを実行します。しかし、私はそのようなものをオンラインで見つけることができないようです。
このようなものを試してください
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()");
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,
]);
PHP =Laravelフレームワーク。実行しようとしている場合SP = using Laravel= Modelその後、次の2つのアプローチを使用できます。
$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;
}
for Laravel 5.5
DB::select('call myStoredProcedure("p1", "p2")');
または
DB::select('call myStoredProcedure(?,?)',array($p1,$p2));
パラメータなし
DB::select('call myStoredProcedure()')
Laravel 5.6で動作するコード、
DB::select('EXEC my_stored_procedure ?,?,?',['var1','var2','var3']);
長い研究の後、これは動作します:
DB::connection("sqlsrv")->statement('exec Pro_Internal_Transfer_Note_post @mvoucherid='.$VMID);
app('db')->getPdo()->exec('exec my_stored_procedure');
バージョン5.5では、CALL
を使用します。
return DB::select(DB::raw('call store_procedure_function(?)', [$parameter]))