创建表而不指定列,或使用临时变量进行连接

时间:2015-09-14 09:24:09

标签: sql-server sql-server-2008

我有这个存储过程,我想找到一种方法,以便在执行Crates_GetForUser

时根本不需要提供列名
ALTER procedure [dbo].[GetSomething]
(
    @UserID VARCHAR(200),
    @URLFilter varchar(256)
)
AS

--Temp table definition must match the output from the Crates_GetForUser stored procedure
CREATE TABLE #CratesTemp
(
   ID int, 
   Title nvarchar(255), 
   URL nvarchar(255), 
   CrateID int, 
   AESKey varchar(100),
   UserIsBuyer int, 
   ClientID int, 
   PromotionName nvarchar(255), 
   DisablePrinting bit, 
   DisableEmailing bit
)

INSERT #CratesTemp (ID, Title, URL, CrateID,AESKey, UserIsBuyer, ClientID, PromotionName, DisablePrinting, DisableEmailing)
    EXEC Crates_GetForUser @UserID, @URLFilter

SELECT #CratesTemp.ClientID, #CratesTemp.CrateID, #CratesTemp.ID AS AutoID, Fruits.* FROM Fruits 
JOIN #CratesTemp ON Fruits.ListUrl LIKE #CratesTemp.URL + '%' OR Fruits.SiteUrl LIKE #CratesTemp.URL + '%'

当您可以轻松使用C#代码调用现有存储过程然后创建新的存储过程以获取常见内容时,最佳做法也是使用此方法。

对我来说,上面看起来像是一个SQL代码的味道,(不是我开发的......)

修改

也许我可以使用Select into但我根本不想提供SQL服务器或数据库名称。谢谢,我可以做这样的事情,因为我收到了语法错误,

0 个答案:

没有答案