SQL kaçış dizilerini kullanma

JDBC sürücüsünü indirin

SQL Server için Microsoft JDBC Sürücüsü, JDBC API'sinde tanımlandığı gibi SQL kaçış dizilerinin kullanımını destekler. Kaçış dizileri, sürücüye SQL dizesinin kaçış bölümünün farklı işlenmesi gerektiğini bildirmek için SQL deyimi içinde kullanılır. JDBC sürücüsü bir SQL dizesinin kaçış bölümünü işlediğinde, dizenin bu bölümünü SQL Server'ın anladığı SQL koduna çevirir.

JDBC API'sinin gerektirdiği beş tür kaçış dizisi vardır ve bunların tümü JDBC sürücüsü tarafından desteklenir:

  • LIKE joker karakterli ifadeler
  • İşlevlerin yönetimi
  • Tarih ve saat sabitleri
  • Saklı yordam çağrıları
  • Dış bağlantılar
  • Kaçış sözdizimini sınırla

JDBC sürücüsü tarafından kullanılan kaçış dizisi söz dizimi aşağıdaki gibidir:

{keyword ...parameters...}

Uyarı

JDBC sürücüsü için SQL kaçış işlemesi her zaman açıktır.

Aşağıdaki bölümlerde beş kaçış dizisi türü ve bunların JDBC sürücüsü tarafından nasıl desteklendiği açıklanmaktadır.

LIKE joker karakterli ifadeler

JDBC sürücüsü, LIKE yan tümcesi joker karakterlerini literal olarak kullanmak için {escape 'escape character'} söz dizimini destekler. Örneğin, aşağıdaki kod col3 için değerler döndürür; burada sütun2 değeri tam anlamıyla bir alt çizgiyle başlar (joker karakter kullanımıyla değil).

ResultSet rst = stmt.executeQuery("SELECT col3 FROM test1 WHERE col2   
LIKE '\\_%' {escape '\\'}");  

Uyarı

Kaçış dizisi SQL deyiminin sonunda olmalıdır. Bir komut dizesindeki birden çok SQL deyimi için kaçış dizisinin her ilgili SQL deyiminin sonunda olması gerekir.

İşlevlerin yönetimi

JDBC sürücüsü, SQL deyimlerinde aşağıdaki söz dizimiyle işlev kaçış dizilerini destekler:

{fn functionName}  

burada functionName JDBC sürücüsü tarafından desteklenen bir işlevdir. Örneğin:

SELECT {fn UCASE(Name)} FROM Employee  

Aşağıdaki tabloda, bir işlev kaçış dizisi kullanılırken JDBC sürücüsü tarafından desteklenen çeşitli işlevler listelenmektedir:

Dize İşlevleri Sayısal İşlevler Datetime İşlevleri Sistem İşlevleri
ASCII

CHAR

CONCAT

DIFFERENCE

INSERT

LCASE

LEFT

Uzunluk

BULUN

LTRIM

TEKRAR

REPLACE

RIGHT

RTRIM

SOUNDEX

SPACE

SUBSTRING

UCASE
ABS

ACOS

ASIN

ATAN

ATAN2

CEILING

COS

BEŞİK

Dereceler

EXP

FLOOR

KAYIT

LOG10

MOD



POWER

RADIANS

RAND

ROUND

SIGN

SIN

SQRT

TAN

Kısaltmak
CURDATE

CURTIME

Gün Adı

DAYOFMONTH

HAFTANINGÜNÜ

YILIN_GÜNÜ

ÖZET

HOUR

MINUTE

MONTH

MONTHNAME

ŞİMDİ

ÇEYREK

SECOND

TIMESTAMPADD

TIMESTAMPDIFF

HAFTA

YEAR
DATABASE

IFNULL

USER

Uyarı

Veritabanının desteklemediği bir işlev kullanmaya çalışırsanız bir hata oluşur.

Tarih ve saat sabitleri

Tarih, saat ve zaman damgası değişmez değerleri için kaçış sözdizimi aşağıdaki gibidir:

{literal-type 'value'}  

burada literal-type aşağıdakilerden biridir:

Literal Türü Description Değer Biçimi
d Date yyyy-mm-dd
t Time hh:mm:ss
ts TimeStamp yyyy-mm-dd hh:mm:ss[.f...]

Örneğin:

UPDATE Orders SET OpenDate={d '2005-01-31'}
WHERE OrderID=1025  

Saklı yordam çağrıları

JDBC sürücüsü, {? = call proc_name(?,...)} ve {call proc_name(?,...)} kaçış söz dizimlerini, bir dönüş parametresi işleyip işlemeyeceğinize bağlı olarak saklı yordam çağrıları için destekler.

Prosedür, veritabanında depolanan yürütülebilir bir nesnedir. Genellikle, önceden derlenmiş bir veya daha fazla SQL deyimidir. Saklı yordamı çağırmak için kaçış dizisi söz dizimi aşağıdaki gibidir:

{[?=]call procedure-name[([parameter][,[parameter]]...)]}  

burada procedure-name saklı yordamın adını ve parameter saklı yordam parametresini belirtir.

Kaçış dizisini call saklı yordamlarla kullanma hakkında daha fazla bilgi için bkz. Saklı Yordamlarla Deyimleri Kullanma.

Dış bağlantılar

JDBC sürücüsü SQL92 sol, sağ ve tam dış birleştirme türlerini destekler. Dış birleşimler için kaçış dizisi aşağıdaki gibidir:

{oj outer-join}  

dış birleştirme işlemi şöyledir:

table-reference {LEFT | RIGHT | FULL} OUTER JOIN
{table-reference | outer-join} ON search-condition  

burada table-reference bir tablo adıdır ve search-condition tablolar için kullanmak istediğiniz birleştirme koşuludur.

Örneğin:

SELECT Customers.CustID, Customers.Name, Orders.OrderID, Orders.Status
   FROM {oj Customers LEFT OUTER JOIN
      Orders ON Customers.CustID=Orders.CustID}
   WHERE Orders.Status='OPEN'  

Aşağıdaki dış birleşim kaçış dizileri JDBC sürücüsü tarafından desteklenir:

  • Sol dış birleşimler
  • Sağ dış birleşimler
  • Tam dış birleşimler
  • İç içe geçen dış birleşimler

Kaçış sözdizimini sınırla

Uyarı

LIMIT kaçış sözdizimi, yalnızca JDBC 4.1 veya üzeri kullanıldığında SQL Server için Microsoft JDBC Sürücüsü 4.2 (veya üzeri) tarafından desteklenir.

LIMIT için kaçış söz dizimi aşağıdaki gibidir:

LIMIT <rows> [OFFSET <row offset>]  

Kaçış söz diziminin iki bölümü vardır: <satırlar> zorunludur ve döndürülecek satır sayısını belirtir. OFFSET ve <satır kaydırması> isteğe bağlıdır ve satır döndürmeye başlamadan önce geçilmesi gereken satır sayısını belirtir. JDBC sürücüsü, sorguyu LIMIT yerine TOP kullanacak şekilde dönüştürerek yalnızca zorunlu bölümü destekler. SQL Server LIMIT yan tümcesini desteklemez. JDBC sürücüsü isteğe bağlı <satır uzaklığını> desteklemez ve kullanılırsa sürücü bir özel durum oluşturur.