2012-07-18 20 views

回答

1

試試這個

declare @SQL varchar(200) 
declare @sql2 varchar(200) 
declare @sqlresult varchar(200) 
set @SQL = 'select productname,year from Products' 

set @sql2 = 'select productname,year from products_sample' 
set @[email protected]+' UNION ALL ' [email protected] 
exec @sqlresult 
+1

需要是'exec(@sqlresult)'。如果沒有括號,SQL Server會查找名爲'select productname的存儲過程,從Products UNION ALL中選擇年份,從products_sample'中選擇year,而不是執行字符串本身。 – 2012-07-18 07:11:30

0

嘗試

@sql = 'select productname,year from products' 

@sql2 = 'select productname,year from products_sample' 

sp_executeSQL @SQL+' UNION ALL ' [email protected] 
+1

需要被'EXEC sp_executeSQL'。對於批次中的第一條語句,「EXEC」只是可選的。也不能在存儲過程參數列表本身中進行連接。 – 2012-07-18 06:53:45

+0

是的。上述問題的答案是展示這個想法。 – PraveenVenu 2012-07-18 06:56:05

+0

那麼顯示工作代碼會更有用。也不要在存儲過程參數列表中使用括號。應該使用'sp_executesql'來處理區分大小寫的排序規則,並且您要連接的變量具有不同的名稱,然後是上面指定的名稱。 – 2012-07-18 07:00:23

2

由於查詢不是在所有參數化也可以簡單地使用

EXEC (@SQL + ' UNION ALL ' + @SQL1) 
+0

感謝所有的答覆。 – syncdm2012 2012-07-18 07:18:21