MySQL процедура с пользовательским «табличным» выводом - PullRequest
1 голос
/ 02 ноября 2010

Это может быть, а может и не быть простым вопросом.

Я ищу способ НЕ выбирать что-либо из таблицы, но возвращать набор табличных данных.

Обычно у меня есть процедура, которая перебирает таблицу и сохраняет данные в переменную, а затем отображает ее в виде строки:

SELECT @args as parents;

Есть ли лучший способ настроить структуру данных таблицы и вернуть все это? Прямо сейчас я возвращаю одну переменную с несколькими (необходимыми для анализа) данными.

EDIT:

Чтобы попытаться объяснить лучше:

Что мне нужно сделать, так это циклически пройти и выполнить серию операторов выбора, есть ли способ «объединить» эти данные в большую структуру данных и затем вернуть эту таблицу?

Ответы [ 3 ]

1 голос
/ 02 ноября 2010

Используйте временную таблицу

   DROP TABLE IF EXISTS tmp;
   CREATE TABLE tmp( --fields-- );   
   WHILE ( --condition-- ) DO
       INSERT INTO tmp VALUES ( --fields-- );
       SELECT --Statement--
   END WHILE;


--do stuff--

и очистите

DROP TABLE tmp
0 голосов
/ 02 ноября 2010

Может быть, вы могли бы вернуть набор записей, как описано здесь http://forums.mysql.com/read.php?102,50520,50626#msg-50626. Надеюсь, что это поможет.

0 голосов
/ 02 ноября 2010

Я не уверен, что для MySQL, но вы должны быть в состоянии использовать функцию для возврата таблицы.По другому вопросу я нашел следующее:

CREATE FUNCTION getdepartments() 
    RETURNS @departments TABLE( 
        DNAME VARCHAR(25), 
        DEPTID VARCHAR(10), 
        DBONUS DECIMAL(7,2)) 
AS 
BEGIN 
    INSERT @departments SELECT * FROM DEPARTMENT; 
    RETURN 
END 

Я сделал это в SQL Server, и вы можете делать забавные вещи, такие как рекурсивные функции, которые продолжают добавлять записи в вашу выходную таблицу и т. Д..

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