Hurriyet

19 Şubat 2014 Çarşamba

PL/SQL: Dynamic SQL - Dinamik SQL

Dinamik SQL Nedir?

Dinamik SQL'ler; içerlerindeki sütun dataları değişen, ya da farklı koşullar altında veriler çıkartan SQL'lerdir. Bunlar çalıştırıldığında sütun içerisindeki değişikliklere göre sonuçları yansıtmaktadır. 

Dinamik SQL ile DDL,DCL veya DML ifadeleri yazılabilir ve PL/SQL'den çalıştırılabilinirler. 

PL/SQL içerisinde izin verilen SQL ifadeleri  SELECT; INSERT, UPDATE, DELETE, MERGE, COMMIT ve ROLLBACK'tir. 

Programda içerisinde bulunmayan ve çalıştırılma zamanında oluşturulan SQL'lere dinamik SQL'ler deriz. Bunlar çalışma anında oluşturulduğu için PL/SQL değişkenleri kullanabilirler ve çalıştırabilirler. Dinamik SQL'lerin text'leri çalıştırılma anlarına kadar bilinmeyebilirler. O yüzden PL/SQL programının çalıştırılması beklenir. Yani programın derlenmesini değil çalıştırılmasını beklerler. 

Program içerisinde oluşturduğumuz dinamik SQL'leri "execute immediate" ile hemen çalıştırabiliriz. 

Dinamik SQL Örneği:

 CREATE OR REPLACE PROCEDURE create_table(  
  p_table_name VARCHAR2, p_col_specs VARCHAR2) IS  
 BEGIN  
  EXECUTE IMMEDIATE 'CREATE TABLE ' || p_table_name ||  
           ' (' || p_col_specs || ')';  
 END;  
 /  

Bu örnekte prosedürümüzle bir tablo yaratmaktayız. Prosedürün derlenmesi sırasında gerekli veriler belirli olmadığı için dinamik SQL kullanırız.

 BEGIN  
  create_table('EMPLOYEE_NAMES',  
    'id NUMBER(4) PRIMARY KEY, name VARCHAR2(40)');  
 END;  
 /  

Prosedür tanımlandıktan sonra da çalıştırdığımız içindeki veriler çalıştırılma anında kullanılır. Çalıştırılma anında o veriler ile istediğimiz SQL tanımlanır. Dinamik SQL'imizin içine tablo adını ve sütunlarla ilgili bilgileri göndeririz. SQL oluşturulunca da hemen "execute immediate" ifadesi ile çalıştırılır.


Hiç yorum yok:

Yorum Gönder