Monday, August 1, 2011

Membuat Function di SQL Server


Pada database server (SQL Server/MySQL) terdapat fasilitas untuk pembuatan function, function digunakan untuk membuat printah dan di jalankan ketika select / update data.

contoh:
select substring(fnama,1,2) from tabel1

pada contoh penggalan sintak sql diatas substring merupakan fungsi yang telah di definiskan (defult) oleh sql server. dan kita bisa membuat fungsi sendiri sesuai dengan kebutuhan.

contoh seperti ini:

select
(case when Harga is null then 0 else Harga end * 
case when JmlBeli is null then 0 else JmlBeli end) as totalBeli
from penjualan


kondisi diatas mengecek jika isi field harga/jmlbeli itu null maka di ganti dengan 0, karna nilai NULL jika di kali dengan nilai berapapun hasilnya NULL, untuk itu harus di ubah dulu menjadi 0.

Dari contoh diatas baru beberapa baris saja, bagaimana jika sql yang kita tulis itu banyak dan komplek, akan sangat memusingkan jika harus mengetik sepanjang itu. Untunglah ada function di sql server.

beginilah sintax untuk membuat function di sql server:


CREATE FUNCTION [dbo].[ceknull]
(
-- @AUTHOR YUSUF HERMANTO


@fnilai float
)
RETURNS float
AS
BEGIN
DECLARE @n float

if (@fnilai is NULL)
begin
set @n = 0 
end
else
begin
set @n = @fnilai
end


return convert(float,@n)


END

kemudian execute sintax diatas, dan selanjutnya kita bisa panggil sintax sql diatas seperti ini:

select
(ceknull(harga) * ceknull(JmlBeli)) as totalBeli
from penjualan

labih singkat kan... :)

Mengambil gambar dalam directory protected


Misalkan kita ada gambar di dalam sub folder dalam sebuah components(di folder yang lain juga).

application
+ components
- images
- add.png
- modify.png

dan kita ingin mengambil gambar tersebut dan menampilkannya di <img> html tag.
untuk melakukan ini di Yii kita perlu mempublish dahulu file-file yang akan di panggil agar bisa di kenal.

// di gunakan untuk mendapatkan directory dari images
// appliacation/components/images
$imagePath=Yii::getPathOfAlias('application.components.images');

// mempublistnya ke dalam directory asset
$baseUrl = Yii::app()->assetManager->publish($imagePath);

// menampilkan gambar
echo CHtml::image($baseUrl.'/add.png');
echo CHtml::image($baseUrl.'/modify.png');


pada baris ini :
$imagePath=Yii::getPathOfAlias('application.components.images');

berarti kita mempublish seluruh file yang ada di folder tersebut, jika hanya ingin mempublish file tertentu bisa menggantinya sebagai berikut:
$imagePath=Yii::getPathOfAlias('application.components.images.add.png');