存储过程的运用

来源:互联网 发布:国际标准体重算法 编辑:程序博客网 时间:2024/05/22 15:15

 

SQL SERVER 联机丛书中的定义:
  存储过程是保存起来的可以接受和返回用户提供的参数的 Transact-SQL 语句的集合。
  可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。
  也可以创建在 Microsoft SQL Server 启动时自动运行的存储过程。

 


/*此种是共用的,需要4个参数*/
/*首先判断此存储过程是否存在,若存在则删除*/
IF OBJECT_ID('PAGE','P') IS NOT NULL
DROP PROC PAGE
GO
CREATE PROC PAGE
@CURRENTPAGE INT=1,@COUNT INT=10,
@TABLENAME NVARCHAR(20),@COLUMN NVARCHAR(20)

AS
DECLARE @SQL NVARCHAR(1000)
DECLARE @TEMP NVARCHAR(50)
DECLARE @SUM INT
DECLARE @T_PAGE INT

/*分页*/
SET @SQL=N'SELECT TOP '+ CAST(@COUNT AS NVARCHAR(4))
SET @SQL=@SQL + N'* FROM '+@TABLENAME+' WHERE '+@COLUMN+' NOT IN('
SET @SQL=@SQL + N'SELECT TOP '+CAST((@CURRENTPAGE-1)*@COUNT AS NVARCHAR(5))
SET @SQL=@SQL + N' '+@COLUMN+' FROM '+@TABLENAME+')'
EXEC (@SQL)

/*总记录条数@sum*/
SET @TEMP=N' SELECT @A=COUNT(*) FROM '+@TABLENAME
EXEC SP_EXECUTESQL @TEMP,N'@A INT OUTPUT',@SUM OUTPUT

/*总页数@T_PAGE*/
SET @T_PAGE=(@SUM+@COUNT-1)/@COUNT
SELECT @SUM AS '总行数',@T_PAGE AS '总页数'

/*执行程序*/
GO
EXEC PAGE 1,3,S_INFO,S_ID