> create or replace procedure ABCD (P_a OUT BOOLEAN, P_B OUT varchar2, p_zadani in PLS_INTEGER := 0) as
begin
if P_ZADANI = 0 then select JMENO into P_B from OSOBA where rownum=1;
else select JMENO into P_B from OSOBA;
end if;
P_A := true;
EXCEPTION
when OTHERS then
P_A := false;
P_B := SQLERRM;
end;
PROCEDURE ABCD compiled
> > PROMPT dopadne to dobře
dopadne to dobře
> set SERVEROUTPUT on
> declare
G_A BOOLEAN;
g_b varchar2(200);
begin
ABCD(G_A, G_B);
if G_A then DBMS_OUTPUT. PUT_LINE('dopadlo to dobře, výsledek je ' || G_B);
else DBMS_OUTPUT. PUT_LINE('dopadlo to špatně z dùvodu ' || G_B);
end if;
end;
anonymous block completed
dopadlo to dobře, výsledek je Ivan Halaška
> PROMPT dopadne to špatně
dopadne to špatně
> declare
G_A BOOLEAN;
g_b varchar2(200);
begin
ABCD(G_A, G_B, 1);
if G_A then DBMS_OUTPUT. PUT_LINE('dopadlo to dobře, výsledek je ' || G_B);
else DBMS_OUTPUT. PUT_LINE('dopadlo to špatně z dùvodu ' || G_B);
end if;
end;
anonymous block completed
dopadlo to špatně z dùvodu ORA-01422: exact fetch returns more than requested number of rows