MySQL хранимая процедура несколько строк возврата - PullRequest
0 голосов
/ 21 февраля 2012

i Возникла проблема с возвратом нескольких строк в одном выводе

, получено несколько user_roleID.Процедура ниже:

CREATE PROCEDURE Sample(OUT userName VARCHAR(30))
BEGIN
SELECT user_roleID INTO userName FROM users;
END

Я хотел бы получить список данных, когда я печатаю выходное значение (имя пользователя)

call Sample1(@emp);
select @emp;

, но когда я выполняю эту команду, я получаюследующее сообщение об ошибке:

1172 - Результат состоит из более чем одной строки

Может кто-нибудь сказать мне, как решить эту проблему?

С уважением

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

Если вы хотите создать хранимую функцию для возврата идентификатора, например, на основе имени пользователя, то будет работать следующее

CREATE FUNCTION Sample(inUserName VARCHAR(255)) RETURNS INT(11)
BEGIN
    DECLARE returnValue INT;
    SELECT user_roleID INTO returnValue FROM users WHERE userName = inUserName LIMIT 1;
    RETURN returnValue;
END

Это будет вызвано с помощью SELECT Sample('SomeUserName') AS userID;

0 голосов
/ 13 января 2014

Вы не можете хранить более одной строки таким образом.Чтобы вернуть несколько строк, вы должны определить курсор или вернуть его напрямую, а не хранить его локально, если не манипулируете данными:

CREATE FUNCTION Sample(inUserName VARCHAR(255)) RETURNS INT(11)
BEGIN
    RETURN SELECT user_roleID FROM users WHERE userName = inUserName;
END

Почему бы вместо этого не использовать только SQL?

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