I have been doing it like that but the problem is the SP did not seem to execute completely. Basically I have a table called PIN with 23 rows in there.
My SP procedure updates a column in this pin table.
When I run the SP in Query analyser, all the pins are updated. However when I call the SP through a C# program only the first 8 pins are updated. Here is what my SP does.
Code:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_pinlock]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_pinlock]
GO

CREATE PROCEDURE sp_pinlock AS

DECLARE PIN_UPDATE CURSOR
FOR SELECT DESCR,PIN FROM PIN
OPEN PIN_UPDATE
	DECLARE @@DESCRIPTION NCHAR(150)
	DECLARE @@PIN CHAR(9)
FETCH NEXT FROM PIN_UPDATE INTO @@DESCRIPTION, @@PIN
DECLARE @@BEDNUM CHAR(2)
DECLARE @@BLDG	CHAR(3)
DECLARE @ERRORVAL CHAR(10)
WHILE @@FETCH_STATUS = 0
 BEGIN
   SET @@BEDNUM = RIGHT(@@DESCRIPTION, 94)
   SET @@BEDNUM = LEFT(@@BEDNUM, 2)
   SET @@BLDG = RIGHT(@@DESCRIPTION,68)
   SET @@BLDG = LEFT(@@BLDG, 3)
		
   DECLARE @@GRP INT
   PRINT @@BLDG + ' ' + @@BEDNUM + ' pin: ' + @@PIN
   IF @@BLDG IN ('BRD', 'BKG','REC','TOC')
      BEGIN
         SET @@GRP = (SELECT GRP FROM SITE WITH (NOLOCK) WHERE GNAME = @@BLDG)
         UPDATE PIN SET SITE = @@GRP WHERE PIN = @@PIN
         PRINT 'PIN: ' + @@PIN + 'was in a BKG, BRD, REC, TOC group'
      END
   SET @ERRORVAL = @@ERROR	
			
   IF @ERRORVAL <> 0 
   BEGIN
      UPDATE PIN SET site = 0 WHERE PIN = @@PIN
      PRINT @@PIN + ' WAS SET TO TIMEGROUP 1, LOCATION IS: ' + @@BLDG
      FETCH NEXT FROM PIN_UPDATE INTO @@DESCRIPTION, @@PIN
   END
				
   FETCH NEXT FROM PIN_UPDATE INTO @@DESCRIPTION, @@PIN
   END
CLOSE PIN_UPDATE
DEALLOCATE PIN_UPDATE

GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
Thanks for your help again.