2014-04-06 26 views
0

我需要一個存儲過程返回10行數據以顯示從最新到最舊數據的頁面。如果用戶點擊下一個或上一個按鈕,我還需要獲得下10行,然後再獲取下20個。我知道如何一次獲得一行,但我不知道如何返回多行。返回多行的SQL Server存儲過程

ALTER PROCEDURE [dbo].[spGetRow] 
    @RowIdent int, 
    @Formula varchar(5) output, 
    @Batch# int output, 
    @Status int output, 
    @AutoMode int output, 
    @Time datetime output, 
    @Mixer varchar(3) output, 
    @QCTech varchar(3) output, 
    @Notes varchar(max) output, 
    @Deck int output, 
    @Ident int output 
AS 
BEGIN 
    SET NOCOUNT ON; 

    SELECT 
     @Formula = [Formula], 
     @Batch# = [Batch#], 
     @Status= [Status], 
     @AutoMode = [AutoMode], 
     @Time = [Time], 
     @Mixer = [Mixer], 
     @QCTech = [QCTech], 
     @Deck = [Notes], 
     @Deck = [Deck], 
     @Ident= [Ident] 
    FROM [VenturaQC].[dbo].[QCLog] 
    WHERE 
     [Ident] = @RowIdent 

    Return 1 
END 

樣品QCLog表

Formula Batch# Status AutoMode Time  Mixer QCTech Notes Deck Ident 
F1235 1 2 1 2014-01-12 00:00:00.000 abc AT Note 1 2 2 
F1235 1 2 2 2014-01-12 00:00:00.000 abc AT Note 2 2 3 
F7175 1 1 1 2014-01-12 00:00:00.000 JH EC 20#VIN. PER 5000#BATCH SIZE 5 6 
F7175 1 2 1 2014-01-12 00:00:00.000 JH KT 20#vin Resample 5 7 
F7610 4 1 1 2014-01-12 00:00:00.000 JH ec  6 8 
F7610 4 5 1 2014-01-12 00:00:00.000 JH KT  6 9 

在此先感謝 肯尼

+0

如果數據要被客戶端直接使用而不是其他TSQL代碼,只需在表上運行一個普通的'SELECT',它將生成一個包含所有需要的行的結果集,像直接查詢。您可以通過表值參數傳遞所有的ID。 – Alejandro

回答

1

「只要做到這一點」。

存儲過程返回select語句的結果。如果您的select語句選擇多行,那麼這些 - 意外驚喜 - 將被返回。初學者基本的sql - 存儲過程與否,所有select語句的工作原理是一樣的。

如果用戶點擊下一個或上一個 按鈕,我還需要獲取下10行,然後是下20個。

不可能在存儲過程中做:SP返回數據,然後結束。它不能等待按鈕點擊。

如果您需要進行分頁,您需要在UI中執行該操作,然後使用相關參數(即跳過並將參數放入SQL中)調用SP。

相關問題