Bagikan melalui


Panggilan Fungsi Skalar

Fungsi skalar mengembalikan nilai untuk setiap baris. Misalnya, fungsi skalar nilai absolut mengambil kolom numerik sebagai argumen dan mengembalikan nilai absolut dari setiap nilai dalam kolom. Urutan escape untuk memanggil fungsi skalar adalah

{fn fungsi skalar }

di mana fungsi skalar adalah salah satu fungsi yang tercantum dalam Lampiran E: Fungsi Skalar. Untuk informasi selengkapnya tentang urutan escape fungsi skalar, lihat Urutan Escape Fungsi Skalar di Lampiran C: Tata Bahasa SQL.

Misalnya, pernyataan SQL berikut membuat kumpulan hasil yang sama dari nama pelanggan huruf besar. Pernyataan pertama menggunakan sintaks escape-sequence. Pernyataan kedua menggunakan sintaksis asli untuk Ingres untuk OS/2 dan tidak dapat dioperasikan.

SELECT {fn UCASE(Name)} FROM Customers  
  
SELECT uppercase(Name) FROM Customers  

Aplikasi dapat mencampur panggilan ke fungsi skalar yang menggunakan sintaksis asli dan panggilan ke fungsi skalar yang menggunakan sintaks ODBC. Misalnya, asumsikan bahwa nama dalam tabel Karyawan disimpan sebagai nama belakang, koma, dan nama depan. Pernyataan SQL berikut membuat kumpulan hasil nama belakang karyawan dalam tabel Karyawan. Pernyataan ini menggunakan FUNGSI skalar ODBC SUBSTRING dan fungsi skalar SQL Server CHARINDEX dan akan dijalankan dengan benar hanya di SQL Server.

SELECT {fn SUBSTRING(Name, 1, CHARINDEX(',', Name) - 1)} FROM Customers  

Untuk interoperabilitas maksimum, aplikasi harus menggunakan fungsi skalar CONVERT untuk memastikan bahwa output fungsi skalar adalah jenis yang diperlukan. Fungsi CONVERT mengonversi data dari satu jenis data SQL ke jenis data SQL yang ditentukan. Sintaks fungsi CONVERT adalah

CONVERT( value_exp , data_type)

di mana value_exp adalah nama kolom, hasil fungsi skalar lain, atau nilai harfiah, dan data_type adalah kata kunci yang cocok dengan nama #define yang digunakan oleh pengidentifikasi jenis data SQL seperti yang ditentukan dalam Lampiran D: Jenis Data. Misalnya, pernyataan SQL berikut menggunakan fungsi CONVERT untuk memastikan bahwa output fungsi CURDATE adalah tanggal, bukan tanda waktu atau data karakter:

INSERT INTO Orders (OrderID, CustID, OpenDate, SalesPerson, Status)  
   VALUES (?, ?, {fn CONVERT({fn CURDATE()}, SQL_DATE)}, ?, ?)  

Untuk menentukan fungsi skalar mana yang didukung oleh sumber data, aplikasi memanggil SQLGetInfo dengan opsi SQL_CONVERT_FUNCTIONS, SQL_NUMERIC_FUNCTIONS, SQL_STRING_FUNCTIONS, SQL_SYSTEM_FUNCTIONS, dan SQL_TIMEDATE_FUNCTIONS. Untuk menentukan operasi konversi mana yang didukung oleh fungsi CONVERT , aplikasi memanggil SQLGetInfo dengan salah satu opsi yang dimulai dengan SQL_CONVERT.