Jeff,

I believe SQL Server would interpret the argument as a single VARCHAR value,
not a list. However, you could tokenize the string in your procedure and
then do a subselect in the IN clause as follows:

CREATE PROCEDURE spMEPFundList (
  @mepid varchar(3),
  @CustList varchar(400),
  @StandList varchar(400)
)
AS

SET NOCOUNT ON

DECLARE @list VARCHAR(400)                                  -- list holder
DECLARE @val VARCHAR(64)                                    -- temp value
DECLARE @pos INT                                            -- current comma
position
DECLARE @which VARCHAR(5)                                   -- execution
status
CREATE TABLE #ttbl_vals (val VARCHAR(64), which VARCHAR(5)) -- temp values

SET @list = @CustList
SET @which = 'cust'

list_processor:
  SET @pos = CHARINDEX(',', @list)

  WHILE @pos <> 0
  BEGIN
    SET @val = LEFT(@list, @pos - 1)
    SET @list = RIGHT(@list, LEN(@list) - CHARINDEX(',', @list))
    SET @pos = CHARINDEX(',', @list)
    INSERT INTO #ttbl_vals (val, which) VALUES (@val, @which)
  END
  IF LEN(@list) > 0
    INSERT INTO #ttbl_vals (val, which) VALUES (@list, @which)

IF @which = 'cust'
BEGIN
  SET @list = @StandList
  SET @which = 'stand'
  GOTO list_processor
END

SELECT tFund_name, tTicker, Cust=0
  FROM tblFunds
 WHERE tTicker IN (SELECT val
                     FROM #ttbl_vals
                    WHERE which = 'stand')
 UNION
SELECT tFund_Name, tTicker, Cust=1
  FROM tblCustomFunds
 WHERE tTicker in (SELECT val
                     FROM #ttbl_vals
                    WHERE which = 'cust')
   AND txtMEP = @mepid

DROP TABLE #ttbl_vals

HTH,
Seva Petrov

> -----Original Message-----
> From: Jeff Gombala [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, March 28, 2001 6:43 PM
> To: CF-Talk
> Subject: T-SQL and single quote lists
>
>
> Is it possible to pass a single quoted list into a SQL server stored
> procedure for use in an "IN" statement:
> see the following code...
>
> ***************
> PROCEDURE
> ***************
>
> CREATE PROCEDURE spMEPFundList
> @mepid varchar(3),
> @CustList varchar(400),
> @StandList varchar(400)
> AS
>
> Select tFund_name, tTicker, Cust=0
> from tblFunds
> where tTicker in (@StandList)
> UNION
> Select tFund_Name, tTicker, Cust=1
> from tblCustomFunds
> where tTicker in (@CustList)
> and txtMEP = @mepid
>
> ****************
> CF CODE
> ****************
>
> <cfset CustList = "'AFAF', 'AGAX'">
>
> <cfstoredproc procedure="insertUser" ...>
> <cfprocparam ....
> <cfprocparam type="IN" cfsqltype="CF_SQL_VARCHAR"
> dbvarname="@CustList" value="#PreserveSingleQuotes(request.CustList)#"
> null="no">
> <cfprocparam ....
> </cfstoredproc>
>
>
>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Structure your ColdFusion code with Fusebox. Get the official book at 
http://www.fusionauthority.com/bkinfo.cfm

Archives: http://www.mail-archive.com/[email protected]/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists

Reply via email to