shihappns Ответов: 1

Oracle SQL. Как вывести более одного объекта?


У меня есть два стола. Модели и автомобили. И процедура, которая экспортирует все модели с именем, которое вводит пользователь, и их ценой(хранится в автомобилях).

Что я уже пробовал:

create or REPLACE procedure modelzz(   VAR_MODEL IN MODELS.NAME_MODEL%TYPE,
                                       VAR_PRICE OUT AUTOMOBILES.A_PRICE%TYPE )
                                       as
                                       begin
SELECT a.A_PRICE
INTO VAR_PRICE
FROM AUTOMOBILES a
join MODELS m
on a.MODELS_ID_MODEL=m.ID_MODEL
where m.NAME_MODEL=VAR_MODEl;
dbms_output.put_line(VAR_MODEL||'''s price is : '||VAR_PRICE);end;


начало процедуры:

var v_modelzz varchar2;
exec modelzz('&model_name',:v_modelzz);


Проблема в том, что я хочу экспортировать все записи для определенной модели. Их больше, чем одна, одна модель может иметь две или более записей.
Вот в чем ошибка: точная выборка возвращает больше запрошенного количества строк

Kornfeld Eliyahu Peter

Не используйте параметр OUT, а простой оператор SELECT внутри процедуры...

Jörgen Andersson

Он использует Oracle, а не Sql Server

Jörgen Andersson

Вам нужно вывести тип коллекции, массив или курсор.

1 Ответов

Рейтинг:
0

ZurdoDev

Как уже упоминалось в комментариях, вы не хотите использовать переменную для вывода данных. Используйте обычный оператор SELECT.


shihappns

Спасибо. Как именно это сделать? Я имею в виду... Где в процедуре я должен поставить SELECT.

ZurdoDev

На самом деле это один из самых основных элементов в разработке баз данных. Просто погуглите, Как сделать хранимую процедуру oracle. У вас есть большая его часть, но вы используете переменную Вместо вывода результирующего набора.