jwcolby
jwcolby at colbyconsulting.com
Thu Mar 20 09:18:58 CDT 2008
We have ignition. I want a function for a couple of reasons, first because
I want to be able to do this in row after row, in table after table. I want
to be able to build update queries that can just call the function etc.
I am there, at least for this one function.
Thanks for your help.
John W. Colby
Colby Consulting
www.ColbyConsulting.com
-----Original Message-----
From: dba-sqlserver-bounces at databaseadvisors.com
[mailto:dba-sqlserver-bounces at databaseadvisors.com] On Behalf Of Paul
Nielsen
Sent: Thursday, March 20, 2008 9:55 AM
To: 'Discussion concerning MS SQL Server'
Subject: Re: [dba-SQLServer] Diving off the deep end
Keep it simple. you don't need to create a function for updating from a this
parsing, just put the expression in your select/update statement.
Update table1
Set col1 = right(t2.col2,len(t2.col2)-patindex('%[^0]%', t2.col2)+1)
from table1 t1
join table2 t2
on t1.pk = t2.pk
- Paul
www.sqlserverbible.com
-----Original Message-----
From: dba-sqlserver-bounces at databaseadvisors.com
[mailto:dba-sqlserver-bounces at databaseadvisors.com] On Behalf Of jwcolby
Sent: Thursday, March 20, 2008 7:27 AM
To: 'Discussion concerning MS SQL Server'
Subject: Re: [dba-SQLServer] Diving off the deep end
Right, figured that out. By "compile" I meant "parse".
Now...
CREATE FUNCTION StripLeadingZeros
(
@StrToStrip varchar(200)
)
RETURNS varchar(200)
AS
BEGIN
-- Declare the return variable here
DECLARE @strTemp varchar(200)
-- Add the T-SQL statements to compute the return value here
select right(@StrToStrip,len(@StrToStrip)-patindex
('%[^0]%', at StrToStrip)+1)
-- Return the result of the function
RETURN @strTemp
END
Parses correctly but returns an error:
Msg 444, Level 16, State 3, Procedure StripLeadingZeros, Line 17
Select statements included within a function cannot return data to a client.
So it seems that the statement:
select right(@StrToStrip,len(@StrToStrip)-patindex
('%[^0]%', at StrToStrip)+1)
Needs to "return" the data to a variable. However if I modify that to:
@strTemp = select right(@StrToStrip,len(@StrToStrip)-patindex
('%[^0]%', at StrToStrip)+1)
Then it no longer parses, returning:
Msg 102, Level 15, State 1, Procedure StripLeadingZeros, Line 18
Incorrect syntax near '@strTemp'.
Msg 137, Level 15, State 2, Procedure StripLeadingZeros, Line 20
Must declare the scalar variable "@strTemp".
Modifying it to:
@strTemp = right(@StrToStrip,len(@StrToStrip)-patindex
('%[^0]%', at StrToStrip)+1)
Returns a parse error:
Msg 102, Level 15, State 1, Procedure StripLeadingZeros, Line 18
Incorrect syntax near '@strTemp'.
Msg 137, Level 15, State 2, Procedure StripLeadingZeros, Line 20
Must declare the scalar variable "@strTemp".
I need to not only get the data out of the string, but place it in a
variable and return that variable which is what I am trying to do here.
John W. Colby
Colby Consulting
www.ColbyConsulting.com
-----Original Message-----
From: dba-sqlserver-bounces at databaseadvisors.com
[mailto:dba-sqlserver-bounces at databaseadvisors.com] On Behalf Of Arthur
Fuller
Sent: Thursday, March 20, 2008 9:14 AM
To: Discussion concerning MS SQL Server
Subject: Re: [dba-SQLServer] Diving off the deep end
First problem is the double quotes, which SQL interprets as a reference to a
column. Second problem is that the statement must begin with the word
SELECT. After that you're good to go:
SELECT Right( 'John W. Colby', 3 )
==> 'lby'
Third issue: don't compile the query. Just run it.
hth,
A.
On 3/20/08, jwcolby <jwcolby at colbyconsulting.com> wrote:
>
> I THINK THAT WE NEED TO BACK UP A FEW STEPS.
>
_______________________________________________
dba-SQLServer mailing list
dba-SQLServer at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/dba-sqlserver
http://www.databaseadvisors.com
_______________________________________________
dba-SQLServer mailing list
dba-SQLServer at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/dba-sqlserver
http://www.databaseadvisors.com
__________ NOD32 2963 (20080320) Information __________
This message was checked by NOD32 antivirus system.
http://www.eset.com
_______________________________________________
dba-SQLServer mailing list
dba-SQLServer at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/dba-sqlserver
http://www.databaseadvisors.com