Showing posts with label exec. Show all posts
Showing posts with label exec. Show all posts

Thursday, March 29, 2012

Get A return value with EXEC?

Hi, I have an sql query like this :

DECLARE
@.TableName varchar(200),
@.ColumnName varchar(200),
@.EmployeeID varchar(200),
@.Result varchar(200);

SET @.TableName = 'Customer';
SET @.ColumnName = 'First_Name';
SET @.CustomerID = 28;

-- This line return Error
SET @.Result = EXEC ('select' + @.ColumnName + ' from ' + @.TableName + ' where Recid = ' + @.CustomerID
+ '');

Print @.Result;

I am pretty sure the SELECT statement in EXEC will only return 0 or 1 record. But how to capture result from EXEC?

Thanks

I think you can do the following:
EXEC ('SET @.Result = select' + @.ColumnName + ' from ' + @.TableName + ' where Recid = ' + @.CustomerID + '');

Wednesday, March 21, 2012

Generating Script

What does N indicate in the following script

SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].xxxx' )

Plz can anyone explain

EXEC dbo.sp_executesql @.statement = N'Create View xxxxx'

The 'N' in the likes of N'[dbo].xxxx' and N'Create View xxxxx' indicates an NVARCHAR datatype. This is the datatype that is used for representing UNICODE strings. The NVARCHAR datatype uses two bytes to represent each character whereas the VARCHAR datatype uses one byte to represent each character.

Also, if you are asking for an explanation of the statement:

Code Snippet

EXEC dbo.sp_executesql @.statement = N'Create View xxxxx'

The "sp_executesql" stored procedure is a stored procedure that is used for executing dynamically created SQL statements. In this case the dynamic SQL statement is the "CREATE VIEW ... " piece. And in this case this statement is used to create a view.

|||Thank you...i have also seen from the MSDN help that N denotes unicode strings which uses 2 bytes to represent each character|||That is correct. Nvarchar/Nchar will store UNICODE values.

Monday, March 19, 2012

Generating an event from an Activation Stored Proc

I am trying to raise an event using sp_trace_generateevent in my activation stored proc. (dbo.ActivationSP)

EXEC sp_trace_generateevent @.event_class = 82, @.userinfo = N'Test Event'

There is a Service broker service listening to this event.

The problem is the event is getting fired whenever the activation SP is executed (could see in profiler) but the secondtargetqueue doesnt receive any messaages.

But if manually do a "EXEC sp_trace_generateevent", the secondtargetqueue receives a messaage.

Both the queues and sevices are in the same database.

The following are the code snippets

-- Code for queue on which the activation is working

CREATE QUEUE TargetQueue WITH STATUS=ON, ACTIVATION (PROCEDURE_NAME = dbo.ActivationSP,MAX_QUEUE_READERS = 5,Execute AS 'dbo') ;

Create Service ReceiverService ON QUEUE TargetQueue (SampleContract)

-- Code for Queue listening to event

Create Queue SecondTargetQueue WITH status= ON

Create Service SecondReceiverService ON QUEUE SecondTargetQueue ([http://schemas.microsoft.com/SQL/Notifications/PostEventNotification])

CREATE EVENT NOTIFICATION TestNotification

ON SERVER FOR UserConfigurable_0 TO SERVICE 'SecondReceiverService', 'current database'

Due to a product defect some profiler events are suppresed under activation. A possible workaround is to use a CLR activated procedure that connects back to the server (using ADO.Net and a real connection, not the context connection) to execute the code you need.

HTH,
~ Remus

|||

Thanks Remus

Can you help me with some example links?

Generating an event from an Activation Stored Proc

I am trying to raise an event using sp_trace_generateevent in my activation stored proc. (dbo.ActivationSP)

EXEC sp_trace_generateevent @.event_class = 82, @.userinfo = N'Test Event'

There is a Service broker service listening to this event.

The problem is the event is getting fired whenever the activation SP is executed (could see in profiler) but the secondtargetqueue doesnt receive any messaages.

But if manually do a "EXEC sp_trace_generateevent", the secondtargetqueue receives a messaage.

Both the queues and sevices are in the same database.

The following are the code snippets

-- Code for queue on which the activation is working

CREATE QUEUE TargetQueue WITH STATUS=ON, ACTIVATION (PROCEDURE_NAME = dbo.ActivationSP,MAX_QUEUE_READERS = 5,Execute AS 'dbo') ;

Create Service ReceiverService ON QUEUE TargetQueue (SampleContract)

-- Code for Queue listening to event

Create Queue SecondTargetQueue WITH status= ON

Create Service SecondReceiverService ON QUEUE SecondTargetQueue ([http://schemas.microsoft.com/SQL/Notifications/PostEventNotification])

CREATE EVENT NOTIFICATION TestNotification

ON SERVER FOR UserConfigurable_0 TO SERVICE 'SecondReceiverService', 'current database'

Due to a product defect some profiler events are suppresed under activation. A possible workaround is to use a CLR activated procedure that connects back to the server (using ADO.Net and a real connection, not the context connection) to execute the code you need.

HTH,
~ Remus

|||

Thanks Remus

Can you help me with some example links?