Как создать хранимую процедуру в MySQL - PullRequest
0 голосов
/ 17 мая 2018

Мои таблицы

create table employee(
id int(10) auto_increment primary key,
name varchar(100),
addressId int(10)
);
go
create table address(
id varchar(10) auto_increment primary key,
name varchar(100)
);

Вот моя процедура

create procedure insert_employee(IN emp_name varchar(100),IN emp_address varchar(100))
begin


    DECLARE @addressId varchar(10);
    SELECT @addressId:=id from address where name LIKE '%'+emp_address+'%';


    IF @addressId = ''
    THEN 
        set @addressId= 'DBS-2136';-- It will come form function
        INSERT INTO address values(@addressId,emp_address);
    END IF

    INSERT INTO employee values(emp_name,@addressId);
END

Я не понимаю, в чем проблема.Если я напишу этот тип, если условие в MS SQL Server нет ошибки.каждый раз, когда выполняется процедура, скажем, ошибка в конце, если.У меня есть поиск в Google, но нет понятия об этом.есть проблема в объявлении переменной.Если я копирую документацию mysql формы, которая также не работает.это почему?Пожалуйста, помогите мне 1. Как правильно объявить переменную в хранимой процедуре MySQL, 2. Как написать, если условие в хранимой процедуре MySQL.спасибо

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Много различий между mysql и mssql. Объявленные переменные не должны содержать '@', все операторы должны быть завершены, + - арифметический оператор, если в вашей процедуре есть несколько операторов, вы должны установить разделители до и после. дальнейшее чтение Как объявить переменную в MySQL? https://dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html

0 голосов
/ 17 мая 2018

С Справочное руководство по MySQL

Блок IF ... END IF, как и все другие блоки управления потоком, используемые в хранимых программах, должен заканчиваться точкой с запятой

IF @addressId = ''
THEN 
    set @addressId= 'DBS-2136';-- It will come form function
    INSERT INTO address values(@addressId,emp_address);
END IF;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...