Я хотел бы вернуть несколько курсоров в одну процедуру, основанную на другой.PLSQL: процедура вывода нескольких курсоров
Мои в настоящее время код:
TYPE REFCURSOR IS REF CURSOR;
PROCEDURE GETCARS(oCARS OUT REFCURSOR)
BEGIN
OPEN oCARS FOR SELECT * FROM CARS;
END GETCARS;
Я не уверен, если это Возможное, но я хочу сделать что-то вроде:
PROCEDURE GETCARS(oCARS OUT REFCURSOR, oREPAIRS OUT REFCURSOR)
BEGIN
OPEN oCARS FOR SELECT * FROM CARS;
..??..
END GETCARS;
, который будет возвращать в качестве второго параметра все ремонты, связанные с в настоящее время выбрана строка oCARS. (Ремонт стола имеет FK для id_car из автомобилей)
Теперь я делаю это на стороне C#, когда я беру одну строку из курсора oCARS. Я вызываю вторую процедуру, которая дает мне список ремонтов, но, возможно, это возможно сделать это в одной процедуре (что дало бы мне выигрыш в производительности? - Я не хочу использовать присоединиться, потому что она возвращает умноженные автомобили для каждого ремонта)
Почему бы не пройти 2 процедуры (getcars и getrepairs)? Или еще лучше, просто выберите то, что вам нужно, когда вам это нужно: выберите * из автомобилей вместо exec getcars() – tbone
Вызов плоскости выбора менее безопасен, чем вызов параметризованной процедуры (защита от вторжения sql). Я ДУМАЮ, что вызов двух процедур менее эффективен. У меня была надежда на некоторый опыт других здесь. –
Вызов корректно параметризованного оператора select не менее безопасен, чем вызов процедуры. Пока вы не объединяете значения параметров в оператор select, вектора для SQL-инъекции нет. – Allan