web-dev-qa-db-ja.com

Laravelからストアドプロシージャを実行する方法

フォームがデータを送信した後、ストアドプロシージャを実行する必要があります。ストアドプロシージャが思いどおりに機能し、フォームが適切に機能しています。 laravel 5.からspを実行するステートメントがわからないだけです。

my_stored_procedureを実行します。しかし、私はそのようなものをオンラインで見つけることができないようです。

28
Jordan Davis

このようなものを試してください

DB::select('exec my_stored_procedure("Param1", "param2",..)');

または

DB::select('exec my_stored_procedure(?,?,..)',array($Param1,$param2));

パラメータなしでこれを試してください

DB::select('EXEC my_stored_procedure')
38

これを行うこともできます:

DB::select("CALL my_stored_procedure()");
12
Roque Mejos

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,
]);
7

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;

}
2
BATMAN

for Laravel 5.5

DB::select('call myStoredProcedure("p1", "p2")');

または

DB::select('call myStoredProcedure(?,?)',array($p1,$p2));

パラメータなし

DB::select('call myStoredProcedure()')
2
vanquan223

Laravel 5.6で動作するコード、

DB::select('EXEC my_stored_procedure ?,?,?',['var1','var2','var3']);
1
DTIndia

長い研究の後、これは動作します:

DB::connection("sqlsrv")->statement('exec Pro_Internal_Transfer_Note_post @mvoucherid='.$VMID);
0
Faisal
app('db')->getPdo()->exec('exec my_stored_procedure');
0
zetta

バージョン5.5では、CALLを使用します。

return DB::select(DB::raw('call store_procedure_function(?)', [$parameter]))
0
imezied