Ответ 1
Люди с фон SQL Server используются для записи хранимых процедур, возвращающих результаты всего запроса, и поэтому пытайтесь написать процедуры PL/SQL примерно так:
procedure get_emps is
begin
-- this will NOT work!
select * from emp;
end;
К сожалению, это не так просто. Вероятно, ближайший эквивалент PL/SQL - это функция, возвращающая курсор ref:
function get_emps return sys_refcursor is
rc sys_refcursor;
begin
open rc for
select * from emp;
return rc;
end;
Вы можете вызвать это из вызывающей программы следующим образом:
declare
cur sys_refcursor;
emp_rec emp%rowtype;
begin
cur := get_emps;
loop
fetch cur into emp_rec;
exit when cur%notfound;
end loop;
close cur;
end;
или в SQL Plus вы можете сделать:
var rc refcursor
:rc := get_emps;
print rc