2016年6月21日 星期二

[MS SQL] [T-SQL] 分頁處理:OFFSET 和 FETCH 子句 (SQL Server 2012)

Just a note to myself...

-- Using OFFSET/ FETCH (This performance was the best.)
SELECT * FROM Vocab
ORDER BY ID
OFFSET 0 ROWS
FETCH NEXT 20 ROWS ONLY;



-- Using Row_Number()
SELECT * 
FROM (
     SELECT row_number() OVER (ORDER BY ID) AS RowNum,ID,word
     FROM dbo.Vocab) AS NewTable
WHERE RowNum >=10 and RowNum<=20;


Reference:
http://sharedderrick.blogspot.tw/2012/06/t-sql-offset-fetch.html
http://blog.xuite.net/xiaolian/blog/51944029-%5BSQL%5D+分頁之Row_Number函式用法

2016年6月16日 星期四

[MS SQL] [SP] 有輸入參數的Stored Procedure


From my old note: http://blog.xuite.net/linriva/blog/41344348


★Stored Procedure
Create procedure sp_Name
(
--宣告引數
--※沒有引數須將括弧拿掉
)as
Declare
begin
--處理內容
end


Ex:
Create  PROCEDURE [dbo].[sp_RivaTest] 
-- =====================================================
-- Author: Riva
-- Create date: 2010.12.25
-- Description: 預存程序 sp_RivaTest XXX-- I'm Description-- I'm Description
-- =====================================================
--判斷資料庫裡是否有 sp_RivaTest 這張表
if exists (select * from dbo.sysobjects 
   where id = object_id(N'[dbo].[sp_RivaTest]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
--刪除Stored Procedure
drop procedure [dbo].[sp_RivaTest]
GO 
SET QUOTED_IDENTIFIER OFF
GO 
SET ANSI_NULLS ON
GO 

-- [sp_RivaTest] 0991225 
Create  PROCEDURE [dbo].[sp_RivaTest] 
--傳入的變數
@Param1 varchar(12), @Param2 varchar(12), @Param3 varchar(7), @Param4 varchar(7) 
) AS 
--Add By Riva 20101223--說明:--   I'm Description--※ Left(@strNewCampcode,8)為:限定 SU02_UNICAMP 存入長度為 8

begin 
--變數宣告 
        Declare @Param1  varchar(12) --xx代碼        Declare @Param2 varchar(12) --xx代碼        Declare @Param3 varchar(7) --推行起始日        Declare @Param4 varchar(7) --推行迄止日   
--指派參數        
        set @strParam1 =@Param1         set @strParam2 =@Param2 set @strParam3 =@Param3        set @strParam4 =@Param4           
 --主檔 
        Insert SUP0002M 
Select  REPLACE(SU02_CAMPCODE,SU02_CAMPCODE,@strParam2) ,  REPLACE(SU02_UNICAMP,SU02_UNICAMP, Left(@strNParam2))
   From SUP0002M    Where SU02_CampCode=@strParam1   
end 


AP 執行sp
exec sp_RivaTest
Ex:
strSQL = string.Format(@"exec sp_RivaTest '{0}','{1}','{2}','{3}'", Param1, Param2, Param3, Param4);