SP :
CREATE PROCEDURE spCursor
(
@Name VARCHAR(250),
)
AS
BEGIN
DECLARE @lReturnCode INT
DECLARE @lErrorCode INT
//declare temporary table
DECLARE @tempCursor Table (
Name Varchar(250)
)
SET NOCOUNT ON
SELECT @lErrorCode = 0
//fnSplitIntoTable is function used to convert string to rows by seperating with commas
BEGIN
INSERT INTO @tempCursor
SELECT vcValuesList as 'CursorName' FROM fnSplitIntoTable(@Name ,',')
DECLARE @NameToPass VARCHAR(MAX)
DECLARE cur4Name CURSOR FOR
SELECT Name from @tempCursor
OPEN cur4Name
FETCH NEXT FROM cur4Name INTO @NameToPass
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @lReturnCode = 1
BEGIN
INSERT INTO YourTable(Name) VALUES (@NameToPass)
END
SELECT @lErrorCode = @@ERROR
IF @lErrorCode != 0 GOTO ErrorHandler
-- If we get here, no Error occurred
SELECT @lReturnCode = 0
--print @NameToPass
FETCH NEXT FROM cur4Name INTO @NameToPass
END
CLOSE cur4Name
DEALLOCATE cur4Name
END
-- On success, returns 0 as lReturnCode and inserted data
-- Error Handler returns the return code
ErrorHandler:
SET NOCOUNT OFF
SELECT 'lReturnCode'=@lReturnCode, 'lErrorCode'=@lErrorCode
RETURN
END
Function To Split Comma To Rows :
CREATE FUNCTION [dbo].[fnSplitIntoTable] (@vcInString VARCHAR(MAX), @cDELIMITER CHAR(1))
RETURNS @OutTable TABLE (vcValuesList VARCHAR(255))
AS
BEGIN
DECLARE @pos INT
SET @vcInString = RTRIM(LTRIM(@vcInString))
SET @pos = CHARINDEX(@cDELIMITER,@vcInString,1)
WHILE @pos <> 0
BEGIN
INSERT INTO @OutTable
SELECT LTRIM(RTRIM(LEFT(@vcInString,@pos-1)))
SET @vcInString = SUBSTRING(@vcInString,@pos+1,LEN(@vcInString))
SET @pos = CHARINDEX(@cDELIMITER,@vcInString,1)
END
INSERT INTO @OutTable
SELECT RTRIM(LTRIM(@vcInString))
RETURN
END
CREATE PROCEDURE spCursor
(
@Name VARCHAR(250),
)
AS
BEGIN
DECLARE @lReturnCode INT
DECLARE @lErrorCode INT
//declare temporary table
DECLARE @tempCursor Table (
Name Varchar(250)
)
SET NOCOUNT ON
SELECT @lErrorCode = 0
//fnSplitIntoTable is function used to convert string to rows by seperating with commas
BEGIN
INSERT INTO @tempCursor
SELECT vcValuesList as 'CursorName' FROM fnSplitIntoTable(@Name ,',')
DECLARE @NameToPass VARCHAR(MAX)
DECLARE cur4Name CURSOR FOR
SELECT Name from @tempCursor
OPEN cur4Name
FETCH NEXT FROM cur4Name INTO @NameToPass
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @lReturnCode = 1
BEGIN
INSERT INTO YourTable(Name) VALUES (@NameToPass)
END
SELECT @lErrorCode = @@ERROR
IF @lErrorCode != 0 GOTO ErrorHandler
-- If we get here, no Error occurred
SELECT @lReturnCode = 0
--print @NameToPass
FETCH NEXT FROM cur4Name INTO @NameToPass
END
CLOSE cur4Name
DEALLOCATE cur4Name
END
-- On success, returns 0 as lReturnCode and inserted data
-- Error Handler returns the return code
ErrorHandler:
SET NOCOUNT OFF
SELECT 'lReturnCode'=@lReturnCode, 'lErrorCode'=@lErrorCode
RETURN
END
Function To Split Comma To Rows :
CREATE FUNCTION [dbo].[fnSplitIntoTable] (@vcInString VARCHAR(MAX), @cDELIMITER CHAR(1))
RETURNS @OutTable TABLE (vcValuesList VARCHAR(255))
AS
BEGIN
DECLARE @pos INT
SET @vcInString = RTRIM(LTRIM(@vcInString))
SET @pos = CHARINDEX(@cDELIMITER,@vcInString,1)
WHILE @pos <> 0
BEGIN
INSERT INTO @OutTable
SELECT LTRIM(RTRIM(LEFT(@vcInString,@pos-1)))
SET @vcInString = SUBSTRING(@vcInString,@pos+1,LEN(@vcInString))
SET @pos = CHARINDEX(@cDELIMITER,@vcInString,1)
END
INSERT INTO @OutTable
SELECT RTRIM(LTRIM(@vcInString))
RETURN
END

