установка единственной строки в переменную в MySQL - PullRequest
0 голосов
/ 27 июля 2011

Я не являюсь разработчиком MYSQL, но мне просто пришлось написать код.Пожалуйста, примите мои извинения, если я делаю что-то глупое в своем коде.

Мне нужно получить одну строку, такую ​​как select *, от пользователей, где userID = 1 limit 1, и назначить ее переменной и получить доступ к столбцам для выполнения.какой-то расчет.Во-первых, возможно ли это?Я попытался пройти шаг за шагом, поэтому я написал простую функцию, например ниже

    DELIMITER $$

CREATE DEFINER=`user`@`%` FUNCTION `GetReportees`(userid VARCHAR(255)) RETURNS varchar(50) CHARSET latin1
    DETERMINISTIC
BEGIN

    DECLARE Var1 varchar(120);
    DECLARE Var2 varchar(120);
    Select @Var1=forename, @Var2=surname from company_users.users where userID = @userid limit 1;
    return @Var1;
END

, когда я пытаюсь сохранить эту функцию, она говорит, что ERROR 1415: Not allowed to return a result set from a function.Но я ясно возвращаю переменную varchar.

Может кто-нибудь сказать мне, что я делаю не так?это не должно быть так сложно, я считаю.

Большое спасибо

С уважением

1 Ответ

3 голосов
/ 27 июля 2011

Вам следует прочитать документацию о разнице между пользовательскими переменными и локальными переменными .

В вашем примере у вас есть параметр и 2 локальные переменные, поэтому вы должны использовать их следующим образом:

    DELIMITER $$

CREATE DEFINER=`user`@`%` FUNCTION `GetReportees`(p_userid VARCHAR(255)) 
    RETURNS varchar(120) CHARSET latin1
    DETERMINISTIC
BEGIN

    DECLARE Var1 varchar(120);
    DECLARE Var2 varchar(120);

    Select forename, surname 
    into Var1,Var2
    from company_users.users 
    where userID = p_userid 
    limit 1;

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