Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Passing list of keys to a sproc to get recordset
Message
 
 
To
23/09/2009 23:16:04
General information
Forum:
Microsoft SQL Server
Category:
SQL syntax
Environment versions
SQL Server:
SQL Server 2008
Application:
Desktop
Miscellaneous
Thread ID:
01425870
Message ID:
01426862
Views:
46
Hi Charles,

Here is an interesting and fast variation of the split function
CREATE FUNCTION  [dbo].[Split](
    @List VARCHAR(8000),
    @Del VARCHAR(1)
) RETURNS TABLE
AS
RETURN (
    WITH Tokens AS (
        SELECT
            StartPos = 1,
            EndPos = CHARINDEX(@Del, @List COLLATE Latin1_General_BIN2 +@del)
        UNION ALL
        SELECT
            EndPos + 1,
            CHARINDEX(@Del, @List COLLATE Latin1_General_BIN2 + @del, EndPos + 1)
        FROM Tokens
        WHERE EndPos > 0
    )
    SELECT
        SUBSTRING(@List, StartPos, EndPos - StartPos) as value
    FROM Tokens
    WHERE EndPos <> 0
)    
See http://forums.asp.net/p/1476140/3433391.aspx#3433391


>Struggling with t-SQL syntax to get a set of record by passing in a string built in vb .net from a list of primary keys. Need 2 versions - one for integer keys, one for guid / uid keys
>- I can be flexible about what and how I pass the params
>I understand t-sql does not actually have arrays so my first instinct is to pass in a string with the guids delimited with ' and separated with a comma and see if the pk is in the "list" of the string.
>
>But that won't work with
>
>select * from members where cpk in (@pklist)
>
>if I leave out the delimeters and have a single string with single quotes surrounding it the above select works but only pulls the first record
>
>Integers an even bigger disaster as they a string values and the above code doesn't cast them
>
>Plan B would be to build a table from the incoming param string and join against that to get the recordset but the syntax for that is beyond my t-sql skills
>
>Have a feeling somebody has the answer to this
>
>Guidance appreciated
>
>TIA
If it's not broken, fix it until it is.


My Blog
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform