Jag håller på med en lagrad procedur som jag inte får till... Jag har nog hamnat i fnutt / dubbelfnutt-träsket ;) jag löste det med en massa fnuttar och bygga den i flera steg...xp_cmdshell vill ha den lite dynamisk i en lagrad proc
(MSSQL 2005 ska det fungera i)
så här tänkte jag mig att den skulle se ut:
<code>
CREATE proc [dbo].[TempMakeFile]
@insert varchar(max),
@output varchar(max)
AS
BEGIN
--Skapa temptabell
Create table #tmp
(
a varchar(50) null
b varchar(50) null
)
--@insert = insert into #tmp select foo a, bar b from baz where yadda yadda yadda...
--Tryck in värden i temptabellen
exec (@insert)
</code>
Nu till delen som inte funkar, det är i samma procedur...
<code>
--Detta funkar!
exec master.dbo.xp_cmdshell 'sqlcmd -dBilaga -q"SELECT (a+'';''+b) Adresser FROM #tmp" >>c:\tmp\tmp.txt'
--Detta funkar inte men det är så jag vill ha!
exec master.dbo.xp_cmdshell 'sqlcmd -dBilaga -q"SELECT (a+'';''+b) Adresser FROM #tmp" >>'+@output
--@output = C:\tmp\tmp.txt
</code>
Jag vill helt enkelt ha en dynamisk output-path men jag får inte till det hela...
Tack på förhand
/AndreasSv: xp_cmdshell vill ha den lite dynamisk i en lagrad proc
Declare @command varchar(max)
Declare @query varchar(max)
Declare @outputpath varchar(max)
Declare @shell varchar(max)
Set @outputpath = @output
Set @query = 'select foo, bar from tmp'
Set @command = '''sqlcmd -Q"'+@query+'" >> '+@outputpath+''''
Set @shell = 'master.dbo.xp_cmdshell '+@command
EXEC (@shell)