Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 468
  • Last Modified:

how can I store my select statement in a variable?

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
Dustin Hopkins
Asked:
Dustin Hopkins
1 Solution
 
brad2575Commented:
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
 
Dustin HopkinsManaging MemberAuthor Commented:
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

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now