Total Tayangan Halaman

Rabu, 15 Juni 2011

Memanggil Stored Procedure MSSQL_SERVER Menggunakan Zend_Db dari Zend Framework

Memanggil Stored Procedure MSSQL_SERVER Menggunakan Zend_Db dari Zend Framework

Pada artikel kali ini kita coba untuk memanggil stored procedure MSSQL Server menggunakan Zend_db milik nya Zend Framework.

Pada Project POS yang akan kita buat pada pembahasan-pembahasan sebelumnya, sedikit banyak pasti tangan kita gatal untuk menggunakan Store procedure untuk beberapa alasan, apalagi dengan banyaknya feature MSSQL Server, diantaranya melakukan Sub-Query yang belum dimiliki oleh MySQL.

Langkah Pertama, Pada project POS yang sudah di Download, pada file config.ini terdapat script sebagai ppengaturan koneksi antara aplikasi ke database, seperti berikut :

resources.db.adapter = "pdo_mssql"
resources.db.params.host = "nama-mesin"
resources.db.params.username = "nama-user"
resources.db.params.password = "password-user-database"
resources.db.params.dbname = "nama-database"
resources.db.isDefaultTableAdapter = true

Selanjutnya, kita buat 1 tabel

CREATE TABLE [dbo].[mst_groupBarang](
[id] [int] IDENTITY(1,1) NOT NULL,
[nama] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_mst_groupBarang] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

Kita isikan beberapa data :

INSERT INTO mst_groupBarang (nama) VALUES ('ATK');
INSERT INTO mst_groupBarang (nama) VALUES ('BUKU');
INSERT INTO mst_groupBarang (nama) VALUES ('SOFTWARE');
INSERT INTO mst_groupBarang (nama) VALUES ('HARDWARE');
INSERT INTO mst_groupBarang (nama) VALUES ('KOMPUTER');

Untuk memastikan, kita bisa coba dengan melakukan perintah select :

SELECT * FROM mst_groupBarang

jika berhasil akan menampilkan hasil sebagai berikut

IDNAMA
1ATK
2BUKU
3SOFTWARE KOMPUTER
4HARDWARE KOMPUTER
4RUMAH TANGGA

Sementara, di File Boostrap.php yang berada di Folder Application pada project Zend yang kita buat, kita daftarkan ke registry Zend.

protected function _initRegistry(){
$this->bootstrap('db');
// mendapatkan nilai dari file config.ini dengan nama resources db
$db = $this->getResource('db');
$db->setFetchMode(Zend_Db::FETCH_OBJ);
// mendaftarkan db sebagai parameter koneksi
Zend_Registry::set('db', $db);
}

Setelah itu, kita buat 1 stored_procedure

CREATE PROCEDURE [dbo].[sp_groupBarang_select]
AS
BEGIN
SELECT id, nama FROM mst_groupBarang
END

untuk memanggil nya, kita bisa mengeksekusi perintah berikut di Query Editr MSSQL Server

DECLARE @return_value int
EXEC @return_value = [dbo].[sp_groupBarang_select]
SELECT 'Return Value' = @return_value
GO

Sekarang, bagaimana cara memanggil store procedurenya menggunakan Zend Framework ???
pada IndexController di action IndexAction, tambahkan script berikut :

$db = Zend_Registry::get('db');
//var_dump($db);
try{
if($db->getConnection()){
$sql = "Exec dbo.sp_groupBarang_select";
$results = $db->query($sql);
$rowset = $results->fetchAll();
foreach($rowset as $a){
echo $a->nama;
}
}
}catch (Zend_Db_Adapter_Exception $e) {
echo $e->getmessage();
echo "LOGIN GAGAL, KAYANYA RDBMS GAK JALAN";
}catch (Zend_Exception $e){
echo "METHOD FACTORY() GAGAL MENJALANKAN CLASS ADAPTER YANG DITUJU";
}

Tidak ada komentar:

Posting Komentar