Solved

how can I store my select statement in a variable?

Posted on 2008-10-17
2
457 Views
Last Modified: 2012-05-05
Hello,
Platform MS SQL 2005
I have a stored proc that recieves an xml string builds a temp table and performs an inner join. It works fine. But I want to also send a regular string variable that contains the fields for the select statement. After searching around it seems I can' t do this the way I want, but is there a way to put this into an exec or something so I cna make this work?



create PROCEDURE [dbo].[sp_BattleRoster_SelDataExtract_xmlinput](@upclist xml, @selectstring varchar(max)) AS

DECLARE @units TABLE (ID varchar(20)) 

INSERT INTO @units (ID) SELECT ParamValues.ID.value('.','VARCHAR(20)')

FROM @upclist.nodes('//upc') as ParamValues(ID) 

SELECT   @selectstring   FROM [urodata].[dbo].[vw_BattleRosterDataExtract]

INNER JOIN     @units u

ON    [vw_BattleRosterDataExtract] .upc = u.ID

Open in new window

0
Comment
Question by:Dustin Hopkins
2 Comments
 
LVL 16

Accepted Solution

by:
brad2575 earned 500 total points
ID: 22744184
Yea do this

EXEC('
INSERT INTO ' + @units  + '(ID) SELECT ' + @SelectFields + '
FROM ' + @upclist + nodes('//upc') + ' as ParamValues(ID)
SELECT  ' +  @selectstring   ' + FROM [urodata].[dbo].[vw_BattleRosterDataExtract]
INNER JOIN     ' + @units + ' u
ON    [vw_BattleRosterDataExtract] .upc = u.ID
')

I am not familar with the XML coding so you may need to adjust the above a bit but you just create a string inside the EXEC statement with quotes around it and then use the "+" anywhere you want to join a variable (like above).  If you want to use a single quote INSIDE the statement then you would use two single quotes (escape characters).



0
 
LVL 14

Author Comment

by:Dustin Hopkins
ID: 22887304
Alright, sorry for the delay, I've been rather busy. I had to do some more research in order to properly incorporate the xml variables and such. Thanks brad for puting me on the right path. Here is the final code.
create PROCEDURE [dbo].[sp_BattleRoster_SelDataExtract_xmlinput]

(@upclist xml, @selectstring varchar(max)) 

AS

DECLARE @SQLStatement varchar(max)

create table #units (ID varchar(20)) 
 

INSERT INTO #units(ID) SELECT  ParamValues.ID.value('.','VARCHAR(20)')

FROM @upclist.nodes('//upc') as ParamValues(ID) 

select @SQLStatement = 'SELECT ' + @selectstring + 

' FROM [urodata].[dbo].[vw_BattleRosterDataExtract]' +

' INNER JOIN #units u ' +

'ON    [vw_BattleRosterDataExtract].upc = u.ID'

--Execute Statement

exec(@SQLStatement)

drop table #units

Open in new window

0

Featured Post

Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

Suggested Solutions

I've encountered valid database schemas that do not have a primary key.  For example, I use LogParser from Microsoft to push IIS logs into a SQL database table for processing and analysis.  However, occasionally due to user error or a scheduled task…
In this article we will get to know that how can we recover deleted data if it happens accidently. We really can recover deleted rows if we know the time when data is deleted by using the transaction log.
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now