Untuk meng-update field suatu tabel dengan isi field dari tabel lain bisa menggunakan perintah :
UPDATE ... SELECT ....

Contoh nya sbb. Field PAJAK dari tabel TMP_RCOM_ALLOWANCE_ICD akan di-update dengan isi field PAJAK dari tabel TMP_PAJAK_KOMISI.

Perintahnya adalah sbb :

update TMP_RCOM_ALLOWANCE_ICD
set PAJAK = b.PAJAK
from TMP_RCOM_ALLOWANCE_ICD a, TMP_RCOM_PAJAK_KOMISI b
where a.V_AGENT_CODE = b.KODEAGEN and b.PERIODE = '20121215' and b.KETERANGAN = 'ALLOWANCE-ICD'

Untuk upload text file ke database (SQL Server atau MySQL) dengan delimiter titik koma (;), script php nya adalah sebagai berikut :

"

$filenm = fopen("U-THCQ-DataItemH1-1209281400.mm", "r");

// Read line by line until end of file
while(!feof($filenm)) {
$filename = fgets($filenm);

$pisah = explode(";", $filename);

$no_sj = $pisah[0];
$tgl_sj = $pisah[1];
$no_do = $pisah[2];
$tgl_do = $pisah[3];

   //echo fgets($filenm) . "
";

echo $no_sj . " - " . $tgl_sj . " - " . $no_do . " - " . $tgl_do . "
";
}

fclose($filenm);
?>
"


Nama text file yang dibaca adalah : U-THCQ-DataItemH1-1209281400.mm.

Output yang dihasilkan sebagai berikut :

CBR150RC(IN)M/T - BK - BLACK - CBR 150R
CBR150RC(IN)M/T - OH - ORANGE HITAM - CBR 150R
CBR150RC(IN)M/T - PM - PUTIH MERAH - CBR 150R
CBR150RC(IN)M/T - RD - RED - CBR 150R
CBR150RC(IN)RM/T - OH - ORANGE HITAM - CBR 150R


Pernah saya menemui kesulitan pada saat hendak mencari tanggal terakhir dari suatu bulan secara otomatis (dari program). Setelah coba 'tanya' sama 'mbah Google' akhirnya ketemulah script untuk mencari tanggal terakhir dari suatu bulan.
Scriptnya sebagai berikut :


  $bulan = "02";
  $tahun = "2009";
$lastday= date('Y-m-d',strtotime('-1 second',strtotime('+1 month',strtotime(date($bulan).'/01/'.date($tahun).' 00:00:00'))));

echo "Tanggal terakhir dari bulan $bulan $tahun adalah $lastday
";

$exlast = explode("-", $lastday);
//ambil nama hari dari tgl terakhir
$cekhari = mktime(0,0,0,date($exlast[1]),date($exlast[2]),date($exlast[0]));
$tglcekhari = date("Y-m-d", $cekhari);
$hari = date("D", $cekhari);
echo "jatuh pada hari \"$hari\"
";


echo "Tgl yang diambil adalah : ".CekLastDay($lastday,0);

function CekLastDay($X,$Z) {
$Extgl = explode("-",$X);
$M = mktime(0,0,0,date($Extgl[1]),date($Extgl[2])-$Z,date($Extgl[0]));
$Mtgl = date("Y-m-d", $M);
$Mhari = date("D", $M);

if($Mhari=="Sat" or $Mhari=="Sun") {
return CekLastDay($Mtgl,1);
//echo "sini $Mtgl
";
} else
return $Mtgl;

}
?>

Tampilan outputnya sebagai berikut :

Tanggal terakhir dari bulan 02 2009 adalah 2009-02-28 
jatuh pada hari "Sat"
Tgl yang diambil adalah : 2009-02-27

Untuk memanggilnya menggunakan fungsi : terbilangs.

-----


function terbilang($angka) {
    // pastikan kita hanya berususan dengan tipe data numeric
    $angka = (float)$angka;

    // array bilangan
    // sepuluh dan sebelas merupakan special karena awalan 'se'
    $bilangan = array(
        '',
        'satu',
        'dua',
        'tiga',
        'empat',
        'lima',
        'enam',
        'tujuh',
        'delapan',
        'sembilan',
        'sepuluh',
        'sebelas'
    );

    // pencocokan dimulai dari satuan angka terkecil
    if ($angka < 12) {
        // mapping angka ke index array $bilangan
        return $bilangan[$angka];
    } else if ($angka < 20) {
        // bilangan 'belasan'
        // misal 18 maka 18 - 10 = 8
        return $bilangan[$angka - 10] . ' belas';
    } else if ($angka < 100) {
        // bilangan 'puluhan'
        // misal 27 maka 27 / 10 = 2.7 (integer => 2) 'dua'
        // untuk mendapatkan sisa bagi gunakan modulus
        // 27 mod 10 = 7 'tujuh'
        $hasil_bagi = (int)($angka / 10);
        $hasil_mod = $angka % 10;
        return trim(sprintf('%s puluh %s', $bilangan[$hasil_bagi], $bilangan[$hasil_mod]));
    } else if ($angka < 200) {
        // bilangan 'seratusan' (itulah indonesia knp tidak satu ratus saja? :))
        // misal 151 maka 151 = 100 = 51 (hasil berupa 'puluhan')
        // daripada menulis ulang rutin kode puluhan maka gunakan
        // saja fungsi rekursif dengan memanggil fungsi terbilang(51)
        return sprintf('seratus %s', terbilang($angka - 100));
    } else if ($angka < 1000) {
        // bilangan 'ratusan'
        // misal 467 maka 467 / 100 = 4,67 (integer => 4) 'empat'
        // sisanya 467 mod 100 = 67 (berupa puluhan jadi gunakan rekursif terbilang(67))
        $hasil_bagi = (int)($angka / 100);
        $hasil_mod = $angka % 100;
        return trim(sprintf('%s ratus %s', $bilangan[$hasil_bagi], terbilang($hasil_mod)));
    } else if ($angka < 2000) {
        // bilangan 'seribuan'
        // misal 1250 maka 1250 - 1000 = 250 (ratusan)
        // gunakan rekursif terbilang(250)
        return trim(sprintf('seribu %s', terbilang($angka - 1000)));
    } else if ($angka < 1000000) {
        // bilangan 'ribuan' (sampai ratusan ribu
        $hasil_bagi = (int)($angka / 1000); // karena hasilnya bisa ratusan jadi langsung digunakan rekursif
        $hasil_mod = $angka % 1000;
        return sprintf('%s ribu %s', terbilang($hasil_bagi), terbilang($hasil_mod));
    } else if ($angka < 1000000000) {
        // bilangan 'jutaan' (sampai ratusan juta)
        // 'satu puluh' => SALAH
        // 'satu ratus' => SALAH
        // 'satu juta' => BENAR
        // @#$%^ WT*

        // hasil bagi bisa satuan, belasan, ratusan jadi langsung kita gunakan rekursif
        $hasil_bagi = (int)($angka / 1000000);
        $hasil_mod = $angka % 1000000;
        return trim(sprintf('%s juta %s', terbilang($hasil_bagi), terbilang($hasil_mod)));
    } else if ($angka < 1000000000000) {
        // bilangan 'milyaran'
        $hasil_bagi = (int)($angka / 1000000000);
        // karena batas maksimum integer untuk 32bit sistem adalah 2147483647
        // maka kita gunakan fmod agar dapat menghandle angka yang lebih besar
        $hasil_mod = fmod($angka, 1000000000);
        return trim(sprintf('%s milyar %s', terbilang($hasil_bagi), terbilang($hasil_mod)));
    } else if ($angka < 1000000000000000) {
        // bilangan 'triliun'
        $hasil_bagi = $angka / 1000000000000;
        $hasil_mod = fmod($angka, 1000000000000);
        return trim(sprintf('%s triliun %s', terbilang($hasil_bagi), terbilang($hasil_mod)));
    } else {
        return 'Wow...';
    }
}

function koma($x)
{
    $x = stristr($x,'.');

    $angka = array('nol','satu','dua','tiga','empat','lima','enam','tujuh','delapan','sembilan');

    $temp   = '';
    $pjg    = strlen($x);
    $pos    = 1;

    while($pos < $pjg)
    {
        $char   = substr($x,$pos,1);
        $pos++;
        $temp  .=  ' '.$angka[$char];
    }
    return $temp;

}

function terbilangs ($x)
{
    if($x<0 p="p">    {
        $hasil = 'minus '.trim(terbilang($x));
    }
    else
    {
        $poin  = trim(koma($x)) ;
        $hasil = trim(terbilang($x));
    }

    if($poin)
    {
        $hasil = ucwords($hasil).' Koma '.ucwords($poin);
    }
    else
    {
        $hasil = ucwords($hasil);//.' koma '.ucwords($poin);;
    }

    return $hasil;

 
}
?>

Pada dasarnya membuat Fungsi sama dengan membuat Stored Procedure. Perbedaannya adalah, dalam Stored Procedure tidak mengembalikan sebuah nilai, sedangkan dalam Fungsi, akan mengembalikan suatu nilai
Berikut contohnya :

ALTER FUNCTION f_agent_name_by_agentcode
(
    @param1 varchar(50)
)
RETURNS varchar(50)
AS
BEGIN
    DECLARE @name_desc as varchar(50)
    select @name_desc = a.V_NAME
    from GNMT_CUSTOMER_MASTER a, AMMM_AGENT_MASTER b
    where a.N_CUST_REF_NO = b.N_CUST_REF_NO and b.V_AGENT_CODE = @param1
    RETURN @name_desc
END
GO

Sedangkan untuk memanggil fungsi tersebut adalah sebagai berikut :

select dbo.f_agent_name_by_agentcode('A0027258') as hasil

Fungsi f_agent_name_by_agentcode akan mencari nama agent dengan kode agent 'A0027258', sehingga akan mengembalikan hasil sebagai berikut :

SITI RAHMAWATI, DRA
Mudah bukan?

Pada dasarnya membuat Fungsi sama dengan membuat Stored Procedure. Perbedaannya adalah, dalam Stored Procedure tidak mengembalikan sebuah nilai, sedangkan dalam Fungsi, akan mengembalikan suatu nilai. Berikut contohnya : ALTER FUNCTION f_agent_name_by_agentcode ( @param1 varchar(5) ) RETURNS varchar(50) AS BEGIN DECLARE @name_desc as varchar(50) select @name_desc = a.V_NAME from GNMT_CUSTOMER_MASTER a, AMMM_AGENT_MASTER b where a.N_CUST_REF_NO = b.N_CUST_REF_NO and b.V_AGENT_CODE = @param1 RETURN @name_desc END GO Sedangkan untuk memanggil fungsi tersebut adalah sebagai berikut : select dbo.f_agent_name_by_agentcode('A0027258') as hasil Fungsi f_agent_name_by_agentcode akan mencari nama agent dengan kode agent 'A0027258', sehingga akan mengembalikan hasil sebagai berikut : SITI RAHMAWATI, DRA Mudah bukan?