Хранимая процедура с mySQL для определения неправильной вставки языка / методики добровольцев - PullRequest
1 голос
/ 06 апреля 2020

У меня проблемы с выводом хранимой процедуры для выделения волонтеру определенных c языков.

Мои требования:

70% вероятности, что на английском языке говорят sh, и 50% шанс каждый для французов и хинди. По умолчанию Engli sh, если ни один из них не указан. Любой, кто говорит по-французски, предпочел бы читать по-французски. В противном случае люди предпочитают читать один из языков, на которых они могут говорить.

Мы построили наши таблицы в основном скрипте:

create table not_volunteer ( -- (volunteer is a view)
member_num int not null auto_increment,
firstname varchar(50) not null,
lastname varchar(50) not null,
dateofbirth date not null,
primary key (member_num)
)

create table volunteer2languageREAD(
member_num int,
is_639_1 varchar(50),
foreign key (is_639_1) references languagee(is_639_1)
foreign key (member_num) references not_volunteer(member_num)
);

create table volunteer2languageSPEAK(
member_num int,
is_639_1 varchar(50) default 'en',
foreign key (is_639_1) references languagee(is_639_1),
foreign key (member_num) references not_volunteer(member_num)
);

У нас есть языковые процедуры:

procedure 'french_generation'(in nfolks int)
BEGIN
declare exit handler for 1452
set @t = (nfolks - @x) * 0.5;
set @r = 0;
while @r < @t do
insert into volunteer2languageSPEAK(member_num, is 639_1)
values(@r+1, 'fr');
insert into volunteer2languageREAD(member_num, is 639_1)
values(@r+1, 'fr');
set @r = @r + 1;
end while;
END

И то же самое для Engli sh:

procedure 'english_generation'(in nfolks int)
BEGIN
declare exit handler for 1452
set @x = (nfolks - @x) * 0.7;
set @y = 0;
while @y < @x do
insert into volunteer2languageSPEAK(member_num, is 639_1)
values(@y+1, 'en');
insert into volunteer2languageREAD(member_num, is 639_1)
values(@y+1, 'en' or 'fr' or 'hi');
set @y = @y + 1;
end while;
END

И хинди:

procedure 'hindi_generation'(in nfolks int)
BEGIN
declare exit handler for 1452
set @t = (nfolks - @x) * 0.5;
set @r = 0;
while @r < @t do
insert into volunteer2languageSPEAK(member_num, is 639_1)
values(@r+1, 'hi');
insert into volunteer2languageREAD(member_num, is 639_1)
values(@r+1, 'hi' or 'fr' or 'en');
set @r = @r + 1;
end while;
END

Мы застряли, наша цель - иметь возможность выполнять анализ запросов в конце с указанными c операторами выбора, и нам нужно убедиться, что языки

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 06 апреля 2020

Ваши процедуры не работают на mysql верстаке

CREATE DEFINER=`root`@`localhost` PROCEDURE `french_generation`(in nfolks int)
BEGIN
    declare exit handler for 1452
    set @t = (nfolks - @x) * 0.5;
    set @r = 0;
    while @r < @t do
        insert into volunteer2languageSPEAK (member_num, `is 639_1`)
            values (@r+1, 'fr');
        insert into volunteer2languageREAD(member_num, `is 639_1`)
            values(@r+1, 'fr');
        set @r = @r + 1;
    end while;
END

Другие аналогичны этому.

Также проверьте вставку вручную и посмотрите, есть ли ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...