8 Ocak 2015 Perşembe

PL/SQL: Parametre Modları

PL/SQL prosedürlerinde veya programlarında parametreler 3 tipte olabilirler. Bunlar;

1-IN
2-OUT
3-IN OUT

IN: parametre tipi programımıza bir değer göndermektedir. Standart parametre modudur.. Parametre tipi herhangi bir ifade, değer veya sabit olabilir.

OUT: parametre tipi programımızdan bir değeri ortama geri döndürmektedir.  Özellikle belirtilmesi gerekir. Bir değişken olmalıdır.

IN OUT: parametre tipi programa bir değer gönderirken bu değerin değiştirilme ihtimali ve geri döndürülme ihtimali bulunur.  Özellikle belirtilmesi gerekir. Bir değişken tipinde olmalıdır.

Prosedürler çağırılırken içerisindeki değerler direk in tipi parametre olarak kabul edilirler. Eğer prosedürümüzün bir değer döndüreceğini belirtmek istiyorsak özellikle out veya in out diye belirtmemiz gerekir.

Standart bir PL/SQL blok örneği :

1->Veri seti olusturulması;

CREATE TABLE STUDENT

(
ID NUMBER,
NAME VARCHAR2(10),
SNAME VARCHAR2(10)
);

insert into STUDENT values(1,'TEST','TEST1');

insert into STUDENT values(2,'TESTA','TESTA1');
insert into STUDENT values(3,'TESTB','TESTB1');
COMMIT;

2->IN /OUT Paremetleri standart PL/SQL paketinin olusturulması;


CREATE OR REPLACE PROCEDURE find_sname 

(
i_student_id IN NUMBER, 
o_first_name OUT VARCHAR2,
o_last_name OUT VARCHAR2
)
AS
BEGIN
   SELECT name, Sname
   INTO o_first_name, o_last_name
  FROM student
 WHERE id = i_student_id;
EXCEPTION
  WHEN TOO_MANY_ROWS
      THEN
      DBMS_OUTPUT.PUT_LINE('More than one finding student_id:'||i_student_id);
  WHEN OTHERS
     THEN
     DBMS_OUTPUT.PUT_LINE('Error in finding student_id:'||i_student_id);
END find_sname;


3->PL/SQL paketinin calıstırılması;


DECLARE
v_local_first_name student.name%TYPE;
v_local_last_name student.Sname%TYPE;
BEGIN
find_sname (2, v_local_first_name, v_local_last_name);
DBMS_OUTPUT.PUT_LINE ('Student 2 is: '||v_local_first_name||' '|| v_local_last_name||'.');
END;

4->Output;





Hiç yorum yok:

Yorum Gönder