-PL/SQL sorgularımızı database’e saklamak için stored procesur haline getiririz.
——————PROCEDURE(YORDAM) —————-
create [or replace] procedure procedure_ismi is
begin
end;
———procedure çalıştırmak için———-
execute procedure_ismi;
————————PROCEDURE ÖRNEK-1————–
create or replace procedure pro_insert is
begin
insert into klinik values(3,’üroloji’);
commit;
end;
/
execute pro_insert;
select * from klinik;
—————–PROCEDURE ÖRNEK-2—————–
create or replace procedure pro_update (phasta_id in number,phasta_adi in varchar2) as
begin
update hastalar set hasta_adi=phasta_adi where hasta_id=phasta_id;
commit;
end;
/
select * from hastalar;
begin
pro_update(20,’semih’);
end;
/
select * from hastalar;
———————-PROCEDURE ÖRNEK-3——————
create or replace procedure pro_update2 (phasta_id in number,p_eski_hasta_adi varchar2, p_yeni_hasta_adi in varchar2) as
begin
update hastalar set hasta_adi=p_yeni_hasta_adi where hasta_id=phasta_id and hasta_adi=p_eski_hasta_adi;
IF SQL%ROWCOUNT = 0 THEN
RAISE_APPLICATION_ERROR(-20000, ‘Hasta adını değiştiremediniz!.’);
END IF;
commit;
end;
/
select * from hastalar;
begin
pro_update2(20,’asli’,’asiye’);
end;
/
select * from hastalar;
———————PROCEDURE ÖRNEK-4————
alter table hastalar add son_update TIMESTAMP DEFAULT SYSTIMESTAMP;
set line 200;
select * from hastalar;
UPDATE hastalar SET son_update = SYSTIMESTAMP;
COMMIT;
——————————–
create or replace procedure pro_update3 (phasta_id in number, p_yeni_hasta_adi in varchar2) as
begin
update hastalar set hasta_adi=p_yeni_hasta_adi,son_update=SYSTIMESTAMP
where hasta_id=phasta_id;
IF SQL%ROWCOUNT = 0 THEN
RAISE_APPLICATION_ERROR(-20000, ‘Hasta adını değiştiremediniz!.’);
END IF;
commit;
end;
/
select * from hastalar;
begin
pro_update3(20,’asli’);
end;
/
—————PROCEDURE ÖRNEK-5——————–
create or replace procedure pro_insert2(klinik_id number,klinik_adi varchar2) is
begin
insert into klinik values(klinik_id,klinik_adi);
commit;
end;
/
execute pro_insert2 (7,’kadın dogum’);
ben bütün siteyi bütün örnekleri çok beğendim ama benim karşılaştığım bi sorun var oracleda procedure içinde select * sorgusunu beceremedim yardımcı olursanız sevinirim teşşekürler kolay gelsin
aşağıdaki procedure select cümlesinde belirtilen tabloyu dbms_output ile ekrana yazar.create or replace procedure pro_select istext VARCHAR2(200);v_text long;BEGINv_text:= ‘select alan as text from tablo_adi’;execute immediate v_text into text;dbms_output.put_line(text);END;