Re: Logging within User_Defined Functions (UDF)
From: Rob (anonymous_at_discussions.microsoft.com)
Date: 05/21/04
- Next message: Aaron Bertrand - MVP: "Re: Logging within User_Defined Functions (UDF)"
- Previous message: Rob: "RE: Logging within User_Defined Functions (UDF)"
- In reply to: Aaron Bertrand - MVP: "Re: Logging within User_Defined Functions (UDF)"
- Next in thread: Aaron Bertrand - MVP: "Re: Logging within User_Defined Functions (UDF)"
- Reply: Aaron Bertrand - MVP: "Re: Logging within User_Defined Functions (UDF)"
- Reply: Anith Sen: "Re: Logging within User_Defined Functions (UDF)"
- Messages sorted by: [ date ] [ thread ]
Date: Fri, 21 May 2004 07:59:56 -0700
This is not the actual function what i will be using to
house my logging. I used this as an simplified test-
harness. Thing is, I am not performing dynamic SQL
directly in the function thats why i'm exec in an xp. if i
do this through cmdshell, it works fine. Can you suggest
any other way?
>-----Original Message-----
>You can't perform dynamic SQL or DML (INSERT, UPDATE,
DELETE) in a function.
>See Books Online for some of the rules governing the use
of functions and
>limitations on what you can do inside of them...
>
>Why is this a function anyway? Looks like a stored
procedure that you
>accidentally typed "CREATE FUNCTION"...
>
>--
>Aaron Bertrand
>SQL Server MVP
>http://www.aspfaq.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: Aaron Bertrand - MVP: "Re: Logging within User_Defined Functions (UDF)"
- Previous message: Rob: "RE: Logging within User_Defined Functions (UDF)"
- In reply to: Aaron Bertrand - MVP: "Re: Logging within User_Defined Functions (UDF)"
- Next in thread: Aaron Bertrand - MVP: "Re: Logging within User_Defined Functions (UDF)"
- Reply: Aaron Bertrand - MVP: "Re: Logging within User_Defined Functions (UDF)"
- Reply: Anith Sen: "Re: Logging within User_Defined Functions (UDF)"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|