Reply to Re: SUBSTRING in User Defined Function - Invalid column

Your name:

Reply:


Posted by jknaty on 05/24/07 13:47

On May 23, 3:22 pm, Ed Murphy <emurph...@socal.rr.com> wrote:
> jknaty wrote:
> > I'm trying to create a function that splits up a column by spaces, and
> > I thought creating a function that finds the spaces with CHARINDEX and
> > then SUBSTRING on those values would an approach. I get an error
> > saying that the I have an Invalid column 'Course_Number'. Not sure
> > why but I am very new to User Defined Functions. Here is what I have
> > so far:
>
> Please don't multi-post (post to each of several newsgroups separately),
> but rather cross-post (post to all of them in a single go). But only do
> that if it's truly relevant to all of them.
>
> > SET @Ind1 = CHARINDEX(' ', Course_Number, 4)
> > SET @Ind2 = CHARINDEX(' ',Course_Number, (CHARINDEX(' ',
> > Course_Number, 4)+1))
>
> This is your problem. See microsoft.public.sqlserver for details.

I understand, amd I'm new to posting to groups and just really wanted
to be sure this got posted to the right group of people to help me
out. I'm still not sure what is wrong but what I did to make things a
bit more clean is break out the part that I really want into a
separate function:

CREATE FUNCTION CourseEvalBreakdown

(

@Course_Number char(20)

)

RETURNS @CourseTable TABLE

(

Course_Number CHAR(20),

Col CHAR(2),

Area CHAR(4),

Number CHAR(4),

Section CHAR(4)

)

AS

BEGIN

DECLARE

@Ind1 tinyint,

@Ind2 tinyint,

@Col char(2),

@Area char(4),

@Number char(4),

@Section char(4)



BEGIN

SET @Ind1 = CHARINDEX(' ', @Course_Number, 4)

SET @Ind2 = CHARINDEX(' ',@Course_Number, (CHARINDEX(' ',
@Course_Number, 4)+1))



SET @Col = SUBSTRING(@Course_Number, 1, 2)

SET @Area = UPPER(SUBSTRING(@Course_Number, 4, @Ind1-4))

SET @Number = UPPER(SUBSTRING(@Course_Number, @Ind1+1, (@Ind2-
@Ind1)-1))

SET @Section = SUBSTRING(@Course_Number, @Ind2+1, 3)



END



INSERT @CourseTable VALUES (UPPER(@Course_Number),@Col, @Area,
@Number, @Section)

RETURN

END

GO

This works and I get the one column that I pass in to the seperated
columns I'm looking for, but now I'm stuck trying to figure out how to
merge those columns into the row that I got the original column which
was passed to this function. I tried to create a select statement
where I call this function but I got stuck there. Then I thought
maybe I can create a function to create a new table with everything
I'm looking for calling this function where I need it and build the
table I'm looking for but again I'm stuck. Any ideas on either?

Thanks,
Jason

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация