Logging within User_Defined Functions (UDF)
From: Rob (anonymous_at_discussions.microsoft.com)
Date: 05/21/04
- Next message: Tibor Karaszi: "Re: ALTER DATABASE (optimization job)"
- Previous message: Anith Sen: "Re: Is there a way to automatically generate a unique field"
- Next in thread: Tibor Karaszi: "Re: Logging within User_Defined Functions (UDF)"
- Reply: Tibor Karaszi: "Re: Logging within User_Defined Functions (UDF)"
- Reply: Volhv: "RE: Logging within User_Defined Functions (UDF)"
- Reply: Aaron Bertrand - MVP: "Re: Logging within User_Defined Functions (UDF)"
- Messages sorted by: [ date ] [ thread ]
Date: Fri, 21 May 2004 07:19:32 -0700
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: Tibor Karaszi: "Re: ALTER DATABASE (optimization job)"
- Previous message: Anith Sen: "Re: Is there a way to automatically generate a unique field"
- Next in thread: Tibor Karaszi: "Re: Logging within User_Defined Functions (UDF)"
- Reply: Tibor Karaszi: "Re: Logging within User_Defined Functions (UDF)"
- Reply: Volhv: "RE: Logging within User_Defined Functions (UDF)"
- Reply: Aaron Bertrand - MVP: "Re: Logging within User_Defined Functions (UDF)"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|