Login or Sign up Help | Site Map
Connecting Tech Pros Worldwide

Use getdate function in a own Function

Question posted by: Rajesh Garg (Guest) on July 20th, 2005 01:14 AM
Hi,
I have written a stored proc with some temporary tables and also used
a getdate() in my stored proc. When i try to call the sproc the error
is that we can only use extended sprocs or function inside a sproc.
Now if try to write the stored proc directly inside a fuction ie copy
paste after changing my temp tables to tables the problem is , i get a
error invalid use of getdate in sproc.What do i do to get something
for my results inside a table.
Thanks in advance.
RVG
Would you like to answer this question?
Sign up for a free account, or Login (if you're already a member).
Anith Sen's Avatar
Anith Sen
Guest
n/a Posts
July 20th, 2005
01:14 AM
#2

Re: Use getdate function in a own Function
Care to post your code here? If you are using GetDate() as a default value
for an input parameter you may see an error similar to the one you
mentioned. BTW, are you using an SP or UDF?

--
- Anith
( Please reply to newsgroups only )



Erland Sommarskog's Avatar
Erland Sommarskog
Guest
n/a Posts
July 20th, 2005
01:14 AM
#3

Re: Use getdate function in a own Function
[posted and mailed, please reply in news]

Rajesh Garg (raj_chins@rediffmail.com) writes:[color=blue]
> I have written a stored proc with some temporary tables and also used
> a getdate() in my stored proc. When i try to call the sproc the error
> is that we can only use extended sprocs or function inside a sproc.
> Now if try to write the stored proc directly inside a fuction ie copy
> paste after changing my temp tables to tables the problem is , i get a
> error invalid use of getdate in sproc.What do i do to get something
> for my results inside a table.[/color]

You say that you are writing a stored procedure, but to me it sounds
like you are working with a user-defined function, UDF.

In a UDF you are fairly limited in what you can do, as you have noted
from the error message. The gist is that you may not change the state
of the database, and the function must be deterministic. That is, it
must always return the same result give a certain a set of data in
the database.

What your real problem is, is a little unclear to me, but it sounds
like you might get some hints from an article of mine. See
http://www.algonet.se/~sommar/share_data.html.

--
Erland Sommarskog, SQL Server MVP, Join Bytes!

Books Online for SQL Server SP3 at
http://www.microsoft.com/sql/techin.../2000/books.asp

Rajesh Garg's Avatar
Rajesh Garg
Guest
n/a Posts
July 20th, 2005
01:15 AM
#4

Re: Use getdate function in a own Function
My requirement is:

I want the final result in some table coz i can create only a view so
as to use the results of the sproc.

drop procedure Sproc_esqlReconcileWithBiz_WMS
go
create Procedure Sproc_esqlReconcileWithBiz_WMS
@InputDateStr as datetime
,@InputInterfaceDb as varchar(32)
,@InputInterfaceType as varchar(10)
as
begin
set nocount on

Declare @InputDate as numeric
Declare @lQryStr as nvarchar(2000)

DECLARE @lTimeZoneAdjustment AS BIGINT
SET @lTimeZoneAdjustment = (SELECT DateDiff(SECOND, DateAdd(SECOND,
0, '01/01/1970'), GETDATE()) - DateDiff(SECOND, DateAdd(SECOND, 0,
'01/01/1970'), GETUTCDATE()))

Set @InputDate = DateDiff(SECOND, DateAdd(SECOND, 0,
'01/01/1970'), cast(@InputDateStr as varchar(20)) ) -
@lTimeZoneAdjustment

Create Table #XIA (DEST varchar(15), BSQ varchar(32), MSG
varchar(2050) )

IF @InputInterfaceType = 'CMS'
Set @lQryStr = 'SOMETHING'
IF @InputInterfaceType = 'BMS'
Set @lQryStr = 'SOMETHING'

exec sp_executesql @lQryStr

UPDATE #XIA SET BSQ = Left(BSQ,3) + substring(BSQ, 5, (Select
case when charindex(char(13), BSQ)<=0 then 4 else charindex(char(13),
BSQ) - 5 end) ) where dest = '-'

Create Table #MismatchTrades ( Destination varchar(15),
BranchSeqNo varchar(32), TotTradesInOrs numeric, TotTradesInBiz
numeric )

Insert into #MismatchTrades
Select XIATrades.Dest AS 'ExecutionDestination',
XIATrades.ExRefNumber as 'Exch Ref #', XIATrades.Cnt as 'XIA Trade
Count', BIZTrades.cnt as 'BIZ Trade Count'
from
(
SOMETHING
)

Select xia.Dest as 'ExecutionDestination', xia.MSG,
missed.BranchSeqNo as 'Exch Ref #', missed.TotTradesInOrs as 'No of
Trades in XIA', missed.TotTradesInBiz as 'No of Trades in BIZ'
from #XIA xia JOIN #MismatchTrades missed
ON xia.BSQ = missed.BranchSeqNo AND xia.Dest =
missed.Destination
order by xia.BSQ

end


The final select statement results i want to get in a function. How do
i get it then.
Thanks for al the help.I will try to follow the link u have sent me.
RVG
Erland Sommarskog <sommar@algonet.se> wrote in message news:<Xns93DE279D4BA3Yazorman@127.0.0.1>...[color=blue]
> [posted and mailed, please reply in news]
>
> Rajesh Garg (raj_chins@rediffmail.com) writes:[color=green]
> > I have written a stored proc with some temporary tables and also used
> > a getdate() in my stored proc. When i try to call the sproc the error
> > is that we can only use extended sprocs or function inside a sproc.
> > Now if try to write the stored proc directly inside a fuction ie copy
> > paste after changing my temp tables to tables the problem is , i get a
> > error invalid use of getdate in sproc.What do i do to get something
> > for my results inside a table.[/color]
>
> You say that you are writing a stored procedure, but to me it sounds
> like you are working with a user-defined function, UDF.
>
> In a UDF you are fairly limited in what you can do, as you have noted
> from the error message. The gist is that you may not change the state
> of the database, and the function must be deterministic. That is, it
> must always return the same result give a certain a set of data in
> the database.
>
> What your real problem is, is a little unclear to me, but it sounds
> like you might get some hints from an article of mine. See
> http://www.algonet.se/~sommar/share_data.html.[/color]

Erland Sommarskog's Avatar
Erland Sommarskog
Guest
n/a Posts
July 20th, 2005
01:15 AM
#5

Re: Use getdate function in a own Function
Rajesh Garg (raj_chins@rediffmail.com) writes:[color=blue]
> I want the final result in some table coz i can create only a view so
> as to use the results of the sproc.[/color]

I'm afraid that this a lost battle. You make references to getdate()
and getdate(), and while the result is deterministic in some sense, SQL
Server does not realize this. You could fix this by passing the time-zone
adjustment as a parameter, but then you also invoke dynamic SQL, which
you cannot do in a function.

The best I could think if is to save the result of the SP in a
table, but then you would need some refresh command.

--
Erland Sommarskog, SQL Server MVP, Join Bytes!

Books Online for SQL Server SP3 at
http://www.microsoft.com/sql/techin.../2000/books.asp

Rajesh Garg's Avatar
Rajesh Garg
Guest
n/a Posts
July 20th, 2005
01:17 AM
#6

Re: Use getdate function in a own Function
I had to look do a complete turnaround to find a possible way.
Thanks for your help anyways
Cheers
RVG

Erland Sommarskog <sommar@algonet.se> wrote in message news:<Xns93DEEB71AAC71Yazorman@127.0.0.1>...[color=blue]
> Rajesh Garg (raj_chins@rediffmail.com) writes:[color=green]
> > I want the final result in some table coz i can create only a view so
> > as to use the results of the sproc.[/color]
>
> I'm afraid that this a lost battle. You make references to getdate()
> and getdate(), and while the result is deterministic in some sense, SQL
> Server does not realize this. You could fix this by passing the time-zone
> adjustment as a parameter, but then you also invoke dynamic SQL, which
> you cannot do in a function.
>
> The best I could think if is to save the result of the SP in a
> table, but then you would need some refresh command.[/color]

 
Not the answer you were looking for? Post your question . . .
173,562 Experts ready to help you find a solution.
Sign up for a free account, or Login (if you're already a member).

  • Didn't find the answer you were looking for?
    Post Your Question
  • Top Community Contributors