增刪改查分頁儲存過程
阿新 • • 發佈:2018-12-20
--建立資料庫 CREATE DATABASE PROCDB GO --使用資料庫 GO USE PROCDB GO --建立表供儲存過程的實現 CREATE TABLE STUDENTINFOS ( ID INT PRIMARY KEY IDENTITY, S_NAME NVARCHAR(50), S_AGE INT, S_SEX CHAR(4) ) GO --建立儲存過程的增刪改 CREATE PROC P_INSERTDELETEUPDATE ( @ID INT, @S_NAME NVARCHAR(50), @S_AGE INT, @S_SEX CHAR(4) ) AS BEGIN IF((SELECT COUNT(ID) FROM STUDENTINFOS WHERE ID = @ID) = 0) BEGIN INSERT INTO STUDENTINFOS VALUES(@S_NAME,@S_AGE,@S_SEX) END ELSE IF(@S_NAME != '' OR @S_AGE != '' OR @S_SEX != '') BEGIN UPDATE STUDENTINFOS SET S_NAME = @S_NAME,S_AGE = @S_AGE, S_SEX = @S_SEX WHERE ID = @ID END ELSE DELETE FROM STUDENTINFOS WHERE ID = @ID END --儲存構成的分頁查詢 CREATE PROC P_PAGESHOW ( @S_NAME NVARCHAR(50), @S_AGE INT, @S_SEX CHAR(4), @PAGEINDEX INT, @PAGESIZE INT, @PAGECOUNT INT OUTPUT ) AS BEGIN DECLARE @STR NVARCHAR(MAX) DECLARE @STRWHERE NVARCHAR(MAX) DECLARE @STRCOUNT NVARCHAR(MAX) SET @STR = 'SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY ID) AS NUM , * FROM STUDENTINFOS WHERE 1=1 ' SET @STRCOUNT = 'SELECT @PATECOUNT = COUNT(ID) FROM STUDENTINFOS WHERE 1=1 ' IF(@S_NAME != '') BEGIN SET @STR += ' AND S_NAME LIKE ''%'
[email protected]_NAME+'%'' ' SET @STRCOUNT += ' AND S_NAME LIKE ''%'[email protected]_NAME+'%'' ' END IF(@S_AGE != '') BEGIN SET @STR += ' AND S_AGE = '''[email protected]_AGE+''' ' SET @STRCOUNT += ' AND S_NAME LIKE ''%'[email protected]_NAME+'%'' ' END IF(@S_SEX != '') BEGIN SET @STR += ' AND S_SEX = '''[email protected]_SEX+''' ' SET @STRCOUNT += ' AND S_NAME LIKE ''%'[email protected]_NAME+'%'' ' END SET @STRWHERE = ') AS TEMP WHERE TEMP.NUM BETWEEN ('+((@PAGEINDEX-1)*@PAGESIZE)+') AND ('[email protected]+')' SET @STR [email protected] EXEC(@STR) EXEC SP_EXECUTESQL @STRCOUNT, N'@PATECOUNT INT OUTPUT ' , @PAGECOUNT OUTPUT END