Keluaran dari Stored Procedure pada SQL Server 2008

Saya tidak akan membahas mengenai apa itu Stored Procedure, silahkan dibaca sendiri di sini hehe

Jadi tujuan kita memanggil atau mengeksekusi sebuah Procedure adalah untuk mendapatkan hasil. Hasil bisa berupa sebuah eksekusi perintah SQL atau berupa keluaran2. Nah menurut MSDN, ada 4 macam keluaran yang bisa dihasilkan oleh Stored Procedure ini, yaitu :
  • Output Parameter
  • Return Code
  • Result Set, dan
  • Global Cursor
Apakah gerangan benda2 itu? Yuuuk mari...

Output Parameter
Keluaran ini adalah parameter2 pada SP yang kita buat. Parameter2 ini bisa kita tentukan sendiri namanya, tipe datanya dengan menambahkan keyword OUTPUT dibelakangnya. Nih contohnya :

CREATE PROCEDURE dbo.sp_OutputParameters
@input1 int ,
@input2 int ,
@outputnya int OUTPUT
AS
BEGIN
set @outputnya = @input1 + @input2
END

coba kita panggil :

declare @hasil int
exec dbo.sp_OutputParameters 1, 1, @hasil OUTPUT
print (@hasil)

Return Code
Ini adalah sebuah nilai yang dihasilkan pada tiap eksekusi SP. Nilainya selalu integer. Kalau eksekusi SP sukses, hasilnya adalah 0. Nilai ini bisa kita tentukan dengan menggunakan keyword return.

Kita coba panggil SP sebelumnya

declare @retval int, @hasil int
exec @retval = dbo.sp_OutputParameters 1, 1, @hasil output
print(@hasil)
print(@retval)

Sekarang kita ubah SP sebelumnya

CREATE PROCEDURE dbo.sp_OutputParameters
@input1 int ,
@input2 int ,
@outputnya int OUTPUT
AS
BEGIN
set @outputnya = @input1 + @input2
return 1000
END

Trus kita panggil lagi

declare @retval int, @hasil int
exec @retval = dbo.sp_OutputParameters 1, 1, @hasil output
print(@hasil)
print(@retval)

Result Set
Result Set ini adalah hasil berupa record2 yang kita dapatkan dari operasi select dalam SP. Langsung saja contohnya...

CREATE PROCEDURE dbo.sp_ResultSet
AS
BEGIN
select * from dbo.TesA
END

Mari lagi2 kita panggilnya

exec dbo.sp_ResultSet

dan ini hasilnya :

Global Cursor
Cursor sebagai output adalah parameter bertipe CURSOR pada SP yang dibelakangnya diikuti keyword VARYING OUTPUT. Contohhhh....

CREATE PROCEDURE dbo.sp_GlobalCursor
@CursorSaya CURSOR VARYING OUTPUT
AS
BEGIN
set @CursorSaya = CURSOR for
SELECT * FROM dbo.TesA

OPEN @CursorSaya
END

Panggilllll....

declare @CursorHasil CURSOR,
@IDHasil int

exec dbo.sp_GlobalCursor @CursorHasil OUTPUT

fetch next from @CursorHasil
into @IDHasil

while @@FETCH_STATUS = 0
begin
print(@IDHasil)

fetch next from @CursorHasil
into @IDHasil
end

CLOSE @CursorHasil
DEALLOCATE @CursorHasil

Dan ini hasilnya
Semoga bermanfaat :D
Saya tidak akan membahas mengenai apa itu Stored Procedure, silahkan dibaca sendiri di sini hehe

Jadi tujuan kita memanggil atau mengeksekusi sebuah Procedure adalah untuk mendapatkan hasil. Hasil bisa berupa sebuah eksekusi perintah SQL atau berupa keluaran2. Nah menurut MSDN, ada 4 macam keluaran yang bisa dihasilkan oleh Stored Procedure ini, yaitu :
  • Output Parameter
  • Return Code
  • Result Set, dan
  • Global Cursor
Apakah gerangan benda2 itu? Yuuuk mari...

Output Parameter
Keluaran ini adalah parameter2 pada SP yang kita buat. Parameter2 ini bisa kita tentukan sendiri namanya, tipe datanya dengan menambahkan keyword OUTPUT dibelakangnya. Nih contohnya :

CREATE PROCEDURE dbo.sp_OutputParameters
@input1 int ,
@input2 int ,
@outputnya int OUTPUT
AS
BEGIN
set @outputnya = @input1 + @input2
END

coba kita panggil :

declare @hasil int
exec dbo.sp_OutputParameters 1, 1, @hasil OUTPUT
print (@hasil)

Return Code
Ini adalah sebuah nilai yang dihasilkan pada tiap eksekusi SP. Nilainya selalu integer. Kalau eksekusi SP sukses, hasilnya adalah 0. Nilai ini bisa kita tentukan dengan menggunakan keyword return.

Kita coba panggil SP sebelumnya

declare @retval int, @hasil int
exec @retval = dbo.sp_OutputParameters 1, 1, @hasil output
print(@hasil)
print(@retval)

Sekarang kita ubah SP sebelumnya

CREATE PROCEDURE dbo.sp_OutputParameters
@input1 int ,
@input2 int ,
@outputnya int OUTPUT
AS
BEGIN
set @outputnya = @input1 + @input2
return 1000
END

Trus kita panggil lagi

declare @retval int, @hasil int
exec @retval = dbo.sp_OutputParameters 1, 1, @hasil output
print(@hasil)
print(@retval)

Result Set
Result Set ini adalah hasil berupa record2 yang kita dapatkan dari operasi select dalam SP. Langsung saja contohnya...

CREATE PROCEDURE dbo.sp_ResultSet
AS
BEGIN
select * from dbo.TesA
END

Mari lagi2 kita panggilnya

exec dbo.sp_ResultSet

dan ini hasilnya :

Global Cursor
Cursor sebagai output adalah parameter bertipe CURSOR pada SP yang dibelakangnya diikuti keyword VARYING OUTPUT. Contohhhh....

CREATE PROCEDURE dbo.sp_GlobalCursor
@CursorSaya CURSOR VARYING OUTPUT
AS
BEGIN
set @CursorSaya = CURSOR for
SELECT * FROM dbo.TesA

OPEN @CursorSaya
END

Panggilllll....

declare @CursorHasil CURSOR,
@IDHasil int

exec dbo.sp_GlobalCursor @CursorHasil OUTPUT

fetch next from @CursorHasil
into @IDHasil

while @@FETCH_STATUS = 0
begin
print(@IDHasil)

fetch next from @CursorHasil
into @IDHasil
end

CLOSE @CursorHasil
DEALLOCATE @CursorHasil

Dan ini hasilnya
Semoga bermanfaat :D