1. 程式人生 > >增刪改查分頁儲存過程

增刪改查分頁儲存過程

--建立資料庫
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