我需要在表单提交数据后执行存储过程。我的存储过程就像我想要的那样工作,并且我的表单正常工作。我只是不知道从laravel 5执行sp的声明。
它应该是这样的:执行my_stored_procedure。但我似乎无法在网上找到类似的东西。
答案 0 :(得分:37)
尝试这样的事情
DB::select('exec my_stored_procedure("Param1", "param2",..)');
或
DB::select('exec my_stored_procedure(?,?,..)',array($Param1,$param2));
尝试不带参数
DB::select('EXEC my_stored_procedure')
答案 1 :(得分:9)
你也可以这样做:
DB::select("CALL my_stored_procedure()");
答案 2 :(得分:7)
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,
]);
答案 3 :(得分:2)
Laravel 5.5
DB::select('call myStoredProcedure("p1", "p2")');
或
DB::select('call myStoredProcedure(?,?)',array($p1,$p2));
没有参数
DB::select('call myStoredProcedure()')
答案 4 :(得分:1)
使用Laraval 5.6的工作代码,
DB::select('EXEC my_stored_procedure ?,?,?',['var1','var2','var3']);
答案 5 :(得分:1)
使用PHP Laravel框架运行Microsoft SQL Server存储过程(MS SQL Server)。 如果您尝试使用Laravel Model运行SP,则可以使用以下两种方法。
$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 :(得分:1)
使用Laravel 5.6(或更高版本)的MySql
DB :: select( '呼叫sp($ id)' );
答案 7 :(得分:0)
对于版本5.5,请使用class Card(object):
def __init__(self, rank, suit):
self.rank = rank
self.suit = suit
def __eq__(self, other):
return self.rank == other.rank and self.suit == other.suit
def __lt__(self, other):
return self.rank < other.rank
hand = [Card(10, 'H'), Card(2, 'h'), Card(12, 'h'), Card(13, 'h'), Card(14, 'h')]
hand_order = [c.rank for c in hand] # [10, 2, 12, 13, 14]
hand_sorted = sorted(hand)
hand_sorted_order = [c.rank for c in hand_sorted] # [2, 10, 12, 13, 14]
:
CALL
答案 8 :(得分:0)
app('db')->getPdo()->exec('exec my_stored_procedure');
答案 9 :(得分:0)
经过长时间的研究,我获得了成功
DB::connection("sqlsrv")->statement('exec Pro_Internal_Transfer_Note_post @mvoucherid='.$VMID);
答案 10 :(得分:0)
如果您的存储过程始终返回某些内容,则可以使用
DB::select("exec StoredProcedure '1','A','PARAM');
否则(如果SP没有响应)它将引发异常。在这种情况下,我建议使用
DB::statetment("exec StoredProcedure '1','A','PARAM'");
答案 11 :(得分:0)
# Real world from my Aplicaction Example Use
$result = DB::connection("sqlsrv")->statement("exec p_SaveOrderWithRelation @cOrderID='{$order->id}', @cPaymentID='{$payment->id}', @cShiftID='{$shift->id}', @cSimple=0");
return $result;
# My PrimaryKey in Models is string type like, and i must put parametr ID like string type:
namespace App\Traits;
use Ramsey\Uuid\Uuid;
use Illuminate\Support\Str;
trait Uuids
{
/**
* Boot function from Laravel.
*/
protected static function boot()
{
parent::boot();
static::creating(function ($model) {
if (empty($model->{$model->getKeyName()})) {
$model->{$model->getKeyName()} = Str::upper(Uuid::uuid4()->toString());
}
});
}
/**
* Get the value indicating whether the IDs are incrementing.
*
* @return bool
*/
public function getIncrementing()
{
return false;
}
/**
* Get the auto-incrementing key type.
*
* @return string
*/
public function getKeyType()
{
return 'string';
}
}