2014-10-07 20 views
0

創建存儲過程我是很新的創建存儲過程,我需要知道這甚至有可能。查詢返回一個開始日期的結果,說明一個星期前(7天),並返回一個百分比的隨機樣本(在本例中爲.4)。我有這樣的查詢運行並得到想要的結果:用於檢索數據

select top .4 percent * 
    from 
    (
     SELECT DISTINCT T.date,T.job,C.creditType 
     FROM [dbo].[Trip_Credits] as T 

     INNER JOIN [dbo].[Credits] as C 
     ON T.credit=C.code 

     INNER JOIN [dbo].[Credit_Types] CT 
     ON CT.Code = C.creditType 
     AND C.creditType =2 
     where T.postdate >= DateADD(day, -7, getDate()) 
    ) pop order by newID() 

我想知道的是,如果我可以創建一個存儲過程,用戶可以輸入百分比值(如.4),數據(其中T.postdate是)和長度(其中-7是)。請記住,表中唯一一個是T.postdate。我看到一些例子如下所示:

EXECUTE HumanResources.uspGetEmployeesTest2 @FirstName = N'Pilar', @LastName = N'Ackerman'; 

而這就是我希望用戶能夠輸入他們想要的值的地方。我知道我可以在C#中這樣做,但我只是想知道,如果這是在SQL Server Management Studio中

+1

你在問Google之前試過谷歌嗎? http://msdn.microsoft.com/en-gb/library/ms345415.aspx – Tanner 2014-10-07 15:03:07

+0

顯然,你沒有作爲你的樣品是從該網頁。 **的第3步創建的查詢編輯器**一個過程顯示瞭如何創建一個存儲過程。 – Tanner 2014-10-07 15:04:12

回答

1

當然可以成爲可能。它看起來是這樣的:

CREATE PROCEDURE dbo.your_sp_name 
    (
     @percent DECIMAL (1,1), 
     @date DATETIME, 
     @DaysToLookBack INT 
    ) 
    AS 
    BEGIN 
     select top(@percent) percent * 
     from 
     (
     SELECT DISTINCT T.date,T.job,C.creditType 
     FROM [dbo].[Trip_Credits] as T 

     INNER JOIN [dbo].[Credits] as C 
     ON T.credit=C.code 

     INNER JOIN [dbo].[Credit_Types] CT 
     ON CT.Code = C.creditType 
     AND C.creditType =2 
     where @date >= DateADD(day, @DaysToLookBack, getDate()) 
     ) pop order by newID() 
    END 
+0

除了那些圍繞百分比的圓括號之外,我還有其他的東西..謝謝你 – user3825831 2014-10-07 15:33:35