Using OUTPUT Parameters in Stored Procedures
According to MS-BOL, SQL Server Stored-Procedures can return data in 4 forms:
1. Return Code: which are always an integer value.
2. OUTPUT Parameter: which can return either data (such as an integer or character value) or a cursor variable (cursors are result sets that can be retrieved one row at a time).
3. A result set for each SELECT statement contained in the stored procedure or any other stored procedures called by the stored procedure.
4. A global cursor that can be referenced outside the stored procedure.
Specifying OUTPUT keyword to the parameters in the Stored Procedures can return the values of the parameters to the calling program.
Let’s check this with a simple example by using AdventureWorks database:
USE [AdventureWorks] GO --// Create Stored Prcedure with OUTPUT parameter CREATE PROCEDURE getContactName @ContactID INT, @FirstName VARCHAR(50) OUTPUT, @LastName VARCHAR(50) OUTPUT AS BEGIN SELECT @FirstName = FirstName, @LastName = LastName FROM Person.Contact WHERE ContactID = @ContactID end GO --// Test the Procedure DECLARE @CID INT, @FName VARCHAR(50), @LName VARCHAR(50) --/ Test# 1 SET @CID = 100 EXEC getContactName @ContactID=@CID, @FirstName=@FName OUTPUT, @LastName=@LName OUTPUT SELECT @FName as 'First Name', @LName as 'Last Name' --/ Output -- ContactID First Name Last Name -- 100 Jackie Blackwell --/ Test# 2 SET @CID = 200 EXEC getContactName @ContactID=@CID, @FirstName=@FName OUTPUT, @LastName=@LName OUTPUT SELECT @FName as 'First Name', @LName as 'Last Name' --/ Output -- ContactID First Name Last Name -- 200 Martin Chisholm GO --// Final Cleanup DROP PROCEDURE getContactName GO
>> Check & Subscribe my [YouTube videos] on SQL Server.
Hi Manoj,
Thanks this is really good. I need some help on stored procedure, like getting a value from a stored procedure and then pass it on as a calling parameter. I am not able to make it working.
Thanx! Good for understanding.
Can u differentiate between out and output parameter in procedures….?
There is no difference b/w OUT & OUTPUT parameters in Stored Procedures, they can be used interchangeably.
For more info check this link in MSDN: http://msdn.microsoft.com/en-us/library/ms187926.aspx, search for “C. Using OUTPUT parameters”.
They have displayed their usage and are identical, so not to confuse.
The article you are posting is very interesting and understandable.
i have one question to you
what do mean by person.contact from the above select statment ? or
what is your table name?
Hi Zeleke, thanks for your comments, and I appreciate you like my posts.
By person.contact in the SELECT statement I meant that “person” is the schema name and “contact” is the table name. Schema name is usually by default dbo in every database, but you create tables by creating schemas.
thanks for your fast response
i tried many times in my stored procedure (i use sql server 2005 ) it returns null to column values
the code is the same as the above unless the schema in my case (dbo.mytablename)
pls help me if u can or any other mechanisim on how to hold outparameter of a stored procedure values in a variable
i facing problem… i have oracle procedure having one out parameter with datatype sys_refcursor… i have to convert this script into sql server 2008 … then please tell me how to convert this without using any tool just by manually ………
Hi Taj,
If you can post the code snippet of the Oracle SP then I can try to convert, otherwise I don’t have experience in Oracle.
Thanks,
Manoj
hello everyone….can anyone send a code for this
9) create a stored procedure for the employee table with the following parameters
empid input parameter,
first_name output parameter,
The procedure should accept id as input and returns corresponding employee details
as output