Re: Logging within User_Defined Functions (UDF)
From: Tibor Karaszi (tibor_please.no.email_karaszi_at_hotmail.nomail.com)
Date: 05/21/04
- Next message: Krystian Zieja / mob: "Re: invalid column name"
- Previous message: Tibor Karaszi: "Re: ALTER DATABASE (optimization job)"
- In reply to: Rob: "Logging within User_Defined Functions (UDF)"
- Next in thread: Volhv: "RE: Logging within User_Defined Functions (UDF)"
- Messages sorted by: [ date ] [ thread ]
Date: Fri, 21 May 2004 16:30:29 +0200
> Why?!!!!
Despite its name, xp_execresultset is an ordinary stored procedure, not an extended stored procedure.
-- Tibor Karaszi, SQL Server MVP http://www.karaszi.com/sqlserver/default.asp http://www.solidqualitylearning.com/ "Rob" <anonymous@discussions.microsoft.com> wrote in message news:103ab01c43f3e$a2fbf500$a401280a@phx.gbl... > Hi > > I'm trying to carry out some logging each time an UDF > executes.However I understand there are some limitations, > i.e you cannot INSERT data into tables directly from > within a function. Ultimately you can only execute > functions and extended procedures within a function. > > So i've tried to use the xp_execresultset xp to insert the > appropriate logging information into a table. using this > xp by itself and not in a function works fine, but as soon > as I copy this bit of code to a normal function, i.e not a > table function, i still get error : > > Server: Msg 557, Level 16, State 2, Procedure zzz_Rob, > Line 13 > Only functions and extended stored procedures can be > executed from within a function. > > Why?!!!! > > I know that my last resort would be to use xp_cmdshell and > run an osql statement but that would mean giving users > access to xp_cmdshell which I dont want to do > > I really just need to know whether I am barking up the > wrong tree here. please tell me if I simply cannot do what > i want to do. Strange this is that it compiles, just wont > let me execute > > Many thanks in advance > Rob > > PS: here is a scaled down version of what I want to do but > it gives you an idea... > > CREATE FUNCTION dbo.zzz_Rob (@udt nvarchar(4000)) > RETURNS int > AS > BEGIN > DECLARE @cmdstr nvarchar(500) > DECLARE @db nvarchar(50) > > SELECT @db = convert(nvarchar(50),db_name()) > > SELECT @cmdstr = 'SELECT ' + '''' + 'SET NO COUNT > ON INSERT EDM..t_ADM_TickerObjectLog(UserName) VALUES(' > + '''' + '''' + convert(nvarchar,user_name > ()) + '''' + '''' + ')' + '''' > > EXEC master..xp_execresultset @cmdstr,@db > > RETURN 0 > > END > >
- Next message: Krystian Zieja / mob: "Re: invalid column name"
- Previous message: Tibor Karaszi: "Re: ALTER DATABASE (optimization job)"
- In reply to: Rob: "Logging within User_Defined Functions (UDF)"
- Next in thread: Volhv: "RE: Logging within User_Defined Functions (UDF)"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|