存储过程增删查改

--添加
CREATE PROCEDURE p_StudentAdd
	@StudentName VARCHAR(50),
	@Gender SMALLINT,
	@ClassesCode INT
	
AS
BEGIN
	BEGIN TRAN 
		BEGIN TRY
			INSERT INTO dbo.Student
			        ( StudentName, Gender, ClassesCode )
			VALUES  (@StudentName, -- StudentName - varchar(50)
			          @Gender, -- Gender - smallint
			          @ClassesCode  -- ClassesCode - int
			          )

			COMMIT TRAN
		END TRY


		BEGIN CATCH
			ROLLBACK TRAN
		END CATCH
	


END
GO
--删除
CREATE PROCEDURE p_StudentDel
	@ID INT 
AS 
BEGIN 
	DELETE FROM dbo.Student WHERE ID=@ID

END


GO

--修改
CREATE PROCEDURE p_StudentUpt
	@StudentName VARCHAR(50),
	@Gender SMALLINT,
	@ClassesCode INT,
	@ID INT 
AS 
BEGIN
	UPDATE dbo.Student SET StudentName=@StudentName,Gender=@Gender,ClassesCode=@ClassesCode WHERE ID=@ID

END
	
GO
    
--显示+分页+模糊查询
CREATE PROCEDURE p_GetStudentList
	@PageIndex int ,--当前页
	@Pagesize FLOAT,--每页显示条数
	@PageCount INT OUTPUT,--总页数
	@StudentName VARCHAR(50),
	@ClassesCode VARCHAR(50),
	@SchoolCode VARCHAR(50) 	

AS
BEGIN
	BEGIN TRAN  
		BEGIN TRY
        
		DECLARE @sql NVARCHAR(max)
			SET @sql='SELECT a.ID,a.StudentName,a.Gender,b.ClassesCode,b.ClassesName,c.SchoolCode,
						c.SchoolName,ROW_NUMBER() OVER(ORDER BY a.ID) rownum  FROM dbo.Student a INNER JOIN dbo.Classes b
						ON b.ClassesCode = a.ClassesCode INNER JOIN dbo.School c ON c.SchoolCode = b.SchoolCode where 1=1 '
			IF(@StudentName!= '')
				SET @sql+=' and a.StudentName='''+@StudentName+'''';
			IF (@ClassesCode!='')
				SET @sql+=' and b.ClassesCode='''+@ClassesCode+'''';
			IF(@SchoolCode!='')
				SET @sql+='and c.SchoolCode='''+@SchoolCode+'''';
		DECLARE @sql2 NVARCHAR(max)
			SET @sql2='SELECT * FROM ('+@sql+') t WHERE t.rownum BETWEEN '+STR(((@PageIndex-1)*@Pagesize+1)) +'AND'+ STR(@PageIndex*@Pagesize)
			PRINT @sql2
			EXEC (@sql2)

			DECLARE @count FLOAT
			EXEC (@sql)
				SET @count=@@ROWCOUNT
				SET @PageCount=CEILING(@count/@Pagesize)
		
			COMMIT TRAN 
		END TRY
        

		BEGIN CATCH
			ROLLBACK TRAN
		END CATCH


END
 
GO 
 DECLARE @PageCount INT 
 EXEC p_GetStudentList 1,2,@PageCount OUTPUT,'','',''
 
 GO
 

--根据ID 查询
CREATE PROCEDURE p_GetStudentListByID
	@ID INT 
AS
BEGIN
	SELECT a.ID,a.StudentName,a.Gender,b.SchoolCode,a.ClassesCode FROM dbo.Student a INNER JOIN dbo.Classes b ON b.ClassesCode = a.ClassesCode  WHERE a.ID=@ID
END
GO
EXEC dbo.p_GetStudentListByID @ID = 7 -- int
GO

--修改
CREATE PROCEDURE p_UpdateStudentList
	@StudentName VARCHAR(50),
	@Gender SMALLINT,
	@ClassesCode INT,
	@ID INT 
AS
BEGIN
	UPDATE dbo.Student SET StudentName=@StudentName,Gender=@Gender,ClassesCode=@ClassesCode WHERE ID=@ID
END

EXEC dbo.p_UpdateStudentList @StudentName = '张三三', -- varchar(50)
    @Gender = 1, -- smallint
    @ClassesCode = 1, -- int
    @ID = 2 -- int


GO





--学校显示
CREATE PROCEDURE p_GetSchoolList
AS
BEGIN
	SELECT * FROM dbo.School

END

GO
--班级显示
CREATE PROCEDURE p_GetClassesList
	@SchoolCode INT  
AS
BEGIN
	SELECT * FROM dbo.Classes WHERE SchoolCode=@SchoolCode

END

SELECT * FROM dbo.Student

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值