Я пытаюсь создать процедуру с помощью кода laravel, встраивая операторы в строку и затем выполняя ее с помощью оператора или неподготовленного, но получаю ошибки; : 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, чтобы найти правильный синтаксис рядом с 'DELIMITER $$ CREATE DEFINER = root
@ localhost
PROCEDURE
Вот мой код;
$query =' DROP procedure IF EXISTS BULKINSERT;';
$query .=' DELIMITER $$';
$query .=' CREATE DEFINER=#root#@#localhost# PROCEDURE #BULKINSERT#()';
$query .=' BEGIN ';
$query .=' DECLARE company_id,department_id BIGINT;';
for($comp = 0;$comp < count($companies); $comp++)
{
$query .=' SET company_id=null;';
$query .=' SELECT id INTO company_id FROM COMPANIES WHERE Name=`'.$companies[$comp].'` ;';
$query .=' IF company_id IS NULL THEN INSERT INTO companies(Name) VALUES(`'.$companies[$comp].'`) ;';
$query .=' SET company_id=LAST_INSERT_ID() ; END IF ;';
if(!empty($departments[$comp]))
{
for($dept = 0;$dept < count($departments[$comp]); $dept++)
{
$query .=' SET department_id=null;';
$query .=' SELECT id INTO department_id FROM DEPARTMENTS WHERE Name=`'.$departments[$comp][$dept].'` ;';
$query .=' IF department_id IS NULL THEN INSERT INTO DEPARTMENTS(Name,company_id) VALUES(`'.$departments[$comp][$dept].'`,company_id) ; ';
$query .=' SET department_id=LAST_INSERT_ID() ; END IF ;';
if(!empty($users[$comp][$dept]))
{
for($user = 0;$user < count($users[$comp][$dept]); $user++)
{
$query .=' INSERT INTO User_Details(Name,department_id) VALUES(`'.$users[$comp][$dept][$user].'`,department_id) ;';
}
}
}
}
}
$query .=' END $$';
$query .=' DELIMITER ;';
$query=str_replace(['`'], ["\""], $query);
$query=str_replace(['#'], ["`"], $query);
$query .=' Call BULKINSERT();';
// echo'<pre>';print_r($query);exit;
//DB::statement($query);
//$results = DB::select( DB::raw($query) );
//DB::unprepared("DROP procedure IF EXISTS BULKINSERT;");
DB::unprepared($query);
//DB::unprepared(" Call BULKINSERT();");
Если я попытаюсь запустить скрипт, созданный с помощью '$ query' в phpmyadmin, он будет работать правильно, но с ошибками из-за неподготовленного оператора. Подскажите, пожалуйста, как это сделать или можно ли через Laravel код?
Заранее спасибо,
Amar