Как вернуть таблицу из функции MySQL
CREATE FUNCTION myFunction(id INT) RETURNS TABLE
BEGIN
RETURN SELECT * FROM board;
END
Этот запрос выдает следующую ошибку:
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TABLE
2 ответа
Согласно документации по пользовательским функциям в MySQL
вы можете только вернуть значения типа {STRING|INTEGER|REAL|DECIMAL}
CREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL}
SONAME shared_library_name
Если вы хотите прочитать select
набор результатов вы должны определить procedure
но нет function
,
DELIMITER //
DROP PROCEDURE IF EXISTS myProcedure //
CREATE PROCEDURE
myProcedure( id INT )
BEGIN
SELECT * FROM board
-- add where condition if required
WHERE Col_name = id
;
END
//
DELIMITER ;
И вы можете вызвать процедуру как
call myProcedure( 6 )
Это возвращает неявные объекты на основе операторов, используемых в процедуре.
Хранимые процедуры могут, а хранимые функции — нет. Если вы выполняете обычный SELECT внутри хранимой процедуры, набор результатов возвращается непосредственно клиенту. Для этого вам необходимо использовать протокол клиент/сервер MySQL 4.1 (или выше). Это означает, что, например, в PHP вам нужно использовать расширение mysqli, а не старое расширение mysql.
справочная ссылка: документы mySql