[thelist] [long] trying to convert VBScript into a stored proc
Jeremy Weiss
jweiss03 at comcast.net
Sun Dec 8 15:50:01 CST 2002
Okay, more of my woes trying to move everything over to SQL Server. I've
got the following script on a few different pages in my site and I'd like to
make a stored proc out of it.
'multiple zip codes are passed from previous page in an array
zipcode_array = Split(zipcodes,",")
For Each V in zipcode_array
If V = " " Then
Exit For
End If
'I know, I need to make it Is instead of Like, it's on my to do list,
honest.
SQL = "SELECT zipcode FROM zip_tbl WHERE zipcode Like '%" & Replace(V,
"'", "''") & "%' "
Set R = conn.execute(SQL)
If NOT (R.EOF OR R.BOF) Then
conn.close
Response.Redirect "power__search.htm"
Exit For
End If
Next
Now, I feel that what I've got is close. the base of it was a script I found
online and then customized it to do what I needed. But Access throws up an
error every time I try to save it. (side note, any recommendations on
software to use to interact with the SQL DB instead of Access?)
Create Procedure IsZipAvailable
@zipcode_array
@separator
As
-- @zipcode_array is the array we wish to parse
-- @Separator is the separator character such as a comma
declare @separator_position int -- This is used to locate each separator
character
declare @array_value varchar(1000) -- this holds each array value as it is
returned
-- For my loop to work I need an extra separator at the end. I always look
to the
-- left of the separator character for each array value
set @zipcode_array = @zipcode_array + @separator
-- Loop through the string searching for separator characters
while patindex('%' + @separator + '%' , @zipcode_array) <> 0
begin
-- patindex matches the a pattern against a string
select @separator_position = patindex('%' + @separator + '%' ,
@zipcode_array)
select @array_value = left(@zipcode_array, @separator_position - 1)
-- This is where you process the values passed.
-- Replace this select statement with your processing
-- @array_value holds the value of this element of the array
select Array_Value = @array_value
set @array_value = LTRIM(@array_value)
set @array_value = RTRIM(@array_value)
declare @unavailable varchar(8)
set @Unavailable = 0
-- Here's the part I added
For Each V in zipcode_array
SELECT zipcode FROM zip_tbl WHERE zipcode Like '%" & Replace(V, "'",
"''") & "%' "
If NOT (R.EOF OR R.BOF) Then
Unavailable = Unavailable + 1
Next
select @array = stuff(@array, 1, @separator_position, '')
end
set nocount off
Return
Access says something about an ADO error when I go to save it. Then it
locks up and I have to ctr-alt-del to close it out and try again.
TIA,
Jeremy
More information about the thelist
mailing list