MySql хранимые процедуры: как выбрать из таблицы процедур? - PullRequest
24 голосов
/ 27 октября 2009

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

CREATE PROCEDURE database.getExamples() 
SELECT * FROM examples;

Как я могу использовать результат этой процедуры при последующем выборе? (Я пробовал

SELECT * FROM (CALL database.getExamples())

но безуспешно.) Должен ли я использовать SELECT ... INTO outVariable в процедуре? Или я должен использовать функцию, возвращающую таблицу вместо этого?

Ответы [ 3 ]

6 голосов
/ 28 октября 2009

Переформулировал вопрос в этой теме: Может ли хранимая процедура / функция вернуть таблицу? . Очевидно, что это невозможно без использования временных таблиц.

3 голосов
/ 27 октября 2009
CREATE TABLE #TempTable
(OID int IDENTITY (1,1),
VAr1 varchar(128) NOT NULL,
VAr2 varchar(128) NOT NULL)

Populate temporary table

INSERT INTO #TempTable(VAr1 , VAr2 )
SELECT * FROM examples
0 голосов
/ 27 октября 2009

В SQL-сервере вы можете сделать SELECT * FROM database.getExamples()

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

В противном случае вы можете просто ВЫБРАТЬ В # временную таблицу внутри хранимой процедуры.

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