Oracle PL-SQL Fonksyon , paket,prosedürler ve hata yakalama

Erhan Kocabaş tarafından yayınlanmıştır 13. Kasım 2009 01:25

Merhaba, Oracle PL-SQL Kodlarını baştan sona inceleyeceğim ve pl-sql dilinin yazım kurallarını anlatacağım referans niteliğinde bir yazı dizisi oluşturmaya karar verdim. Bu bölümde fonksyon,paket, cursor kavramını ve hata yakalama kodlarını vereceğim.

Genel Tanımlar blok yapısı:

Prosedür Tanımlama Syntax yapısı: 

CREATE [OR REPLACE] PROCEDURE procedure_name

 [(parameter1 [mode] datatype1,

   parameter2 [mode] datatype2, ...)]

IS|AS

  [local_variable_declarations; …]

BEGIN
  -- actions;

END [procedure_name];

 

Fonksyonların Syntax yapısı;

CREATE [OR REPLACE] FUNCTION function_name
 
[(parameter1 [mode1] datatype1, ...)]

RETURN datatype IS|AS

 [local_variable_declarations; …]

BEGIN
  -- actions;

  RETURN expression;

END [function_name];

 

Örnek bir Fonksyon;

 

CREATE OR REPLACE FUNCTION get_credit

 (v_id customers.customer_id%TYPE) RETURN NUMBER IS

  v_credit customers.credit_limit%TYPE := 0;

BEGIN

  SELECT credit_limit

  INTO   v_credit

  FROM   customers        

  WHERE  customer_id = v_id;

  RETURN v_credit;

END get_credit;

/

 

 

Bu örnek fonksyonu çalıştırmak için ;

 

EXECUTE dbms_output.put_line(get_credit(101))

Package Oluşturmak;

Ilk once Package’n spec kısmı;

CREATE [OR REPLACE] PACKAGE package_name IS|AS

    public type and variable declarations

    subprogram specifications

END [package_name];

 

Body kısmı;

 

CREATE [OR REPLACE] PACKAGE BODY package_name IS|AS

    private type and variable declarations

    subprogram bodies

[BEGIN initialization statements]

END [package_name];

Oracle Cursor’lar

Oracle Cursorların 4 temel özniteliği vardır.

      cursor_name%FOUND

      cursor_name%ISOPEN

      cursor_name%NOTFOUND

      cursor_name%ROWCOUNT

Cursor Kullanımı için Syntax yapısı;

FOR record_name IN cursor_name LOOP  

  statement1;

  statement2;

  . . .

END LOOP;

Örnek Cursor Kullanımı;

SET SERVEROUTPUT ON

DECLARE

  CURSOR cur_cust IS

   SELECT cust_first_name, credit_limit

   FROM customers

   WHERE credit_limit > 4000;

BEGIN

  

    LOOP

     DBMS_OUTPUT.PUT_LINE

     (                              ||' '||

                                  );  

    END LOOP;

END;

/

 

Hata Yakalama;

 

DECLARE

  v_lname VARCHAR2(15);

BEGIN

  SELECT cust_last_name INTO v_lname FROM customers

  WHERE cust_first_name='Ally';

  DBMS_OUTPUT.PUT_LINE ('Ally''s last name is : '
                 ||v_lname);

EXCEPTION

  WHEN TOO_MANY_ROWS THEN

  DBMS_OUTPUT.PUT_LINE (' Your select statement
  retrieved multiple rows. Consider using a
  cursor.');

 

END;

/

Oracle Hata Tipleri;

     NO_DATA_FOUND

     TOO_MANY_ROWS

     INVALID_CURSOR

     ZERO_DIVIDE

     DUP_VAL_ON_INDEX

Hata Fırlatma ;

raise_application_error (error_number,

       message[, {TRUE | FALSE}]);

 

3 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: , , , , ,

Makale | Oracle PL-SQL

Yorumlar

Yorum ekle


 

biuquote
  • Yorum
  • Canlı önizleme
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.


Erhan Kocabaş Hakkında

Erhan Kocabaş 1985 yılında Kocaeli/Çınarlıda Doğdu.
Sakarya Üniversitesi Bilgisayar Mühendisliği bölümünden 2009 da mezun oldu.
Şuan Özel bir firmada Yazılım Mühendisliği yapmakta.
Erhan Kocabaş - MCPD MCTS

Son Yazılar

Son Yorumlar

Comment RSS