View Single Post

   
  #1 (permalink)  
Old 03-06-2008, 03:04 PM
evanburen@gmail.com
 
Posts: n/a
Default SQL Server 2000 Varchar limit

I pass a comma-delimitted string of numbers to a sproc that can be
huge. I'm using this Split function to break up the list of numbers by
comma. It works great but only holds up to the varchar limit of 8000
and my requirements often exceed that. I think SQL Server 2005 uses a
new MAX property for varchars but I'm still using SQL Server 2000. Is
this any way to overcome this? Thanks.


CREATE PROCEDURE [dbo].[up_ExportQuickSearchresults]
@p_selectedDirectors VARCHAR(8000)
AS
BEGIN

SELECT * FROM v_QuickSearchResults
WHERE IDDir in (SELECT IDDir FROM split(@p_selectedDirectors, ','))
END GO



CREATE FUNCTION dbo.Split
(
@ItemList VARCHAR(8000),
@delimiter CHAR(1)
)
RETURNS @IDTable TABLE (IDDir VARCHAR(8000))
AS

BEGIN
DECLARE @tempItemList VARCHAR(8000)
SET @tempItemList = @ItemList

DECLARE @i INT
DECLARE @IDDir VARCHAR(8000)

SET @tempItemList = REPLACE (@tempItemList, ' ', '')
SET @i = CHARINDEX(@delimiter, @tempItemList)

WHILE (LEN(@tempItemList) > 0)
BEGIN
IF @i = 0
SET @IDDir = @tempItemList
ELSE
SET @IDDir = LEFT(@tempItemList, @i - 1)
INSERT INTO @IDTable(IDDir) VALUES(@IDDir)
IF @i = 0
SET @tempItemList = ''
ELSE
SET @tempItemList = RIGHT(@tempItemList,
LEN(@tempItemList) - @i)
SET @i = CHARINDEX(@delimiter, @tempItemList)
END
RETURN
END
Reply With Quote