--use PassportForm --if(exists(select * from sys.objects where name='proc_get_passport')) --drop proc proc_get_passport --go --create proc proc_get_passport --as --select * from passport --exec proc_get_passport --alter proc proc_get_passport --as --select userName from passport --if(OBJECT_ID('proc_find_user','p') is not null) --drop proc proc_find_user --go --create proc proc_find_user(@resultNoStart nvarchar, @resultNoEnd nvarchar) --as --select * from Passport where resultNo between @resultNoStart and @resultNoEnd --go --exec proc_find_user '-1','1' --if(OBJECT_ID('proc_findUserByName','p')is not null) --drop proc proc_findUserByName --go --create proc proc_findUserByName(@userName nvarchar(20)='%j%', @nextUserName nvarchar(20)='%') --as --select * from passport where userName like @userName and userName like @nextUserName; --go --exec proc_findUserByName --exec proc_findUserByName '%b%', '%100%' --alter proc proc_findUserByName(@userName nvarchar(20)='%b%',@nextUserName nvarchar(20)='%') --as --select * from passport where userName like @userName or userName like @nextUserName; --go --exec proc_findUserByName '%y%', '%9%' ----if(OBJECT_ID('proc_getUserName','p')is not null) ----drop proc proc_getUserName ----go --create proc proc_getUserName(@resultNo varchar(10),@name nvarchar(20) out, @userIP varchar(12) output) --as --select @name=username, @userIP=userIp from PassportForm where resultNo=@resultNo; --go --alter proc proc_getUserName(@resultNo varchar(10),@name nvarchar(20) out, @userIP varchar(12) output) --as --select @name=username, @userIP=userIp from passport where resultNo=@resultNo; --go --declare @userName nvarchar(20),@userIP nvarchar(12),@resultNo nvarchar(10); --set @resultNo='0'; ----难道@resultNo一定要放在前面?如果不放最前面,会报:形参 "@resultNo" 未声明为 OUTPUT 参数,但传递进来的实参请求输出。 ----跟存储过程的参数顺序必须一样 --exec proc_getUserName @resultNo, @userIP output, @userName out; --select @userIP, @userName; --print @userName+'#'+@userIP; --if(OBJECT_ID('proc_temp_encryption','p') is not null) --drop proc proc_temp_encryption --go --create proc proc_temp_encryption --指示 SQL Server 将 CREATE PROCEDURE 语句的原始文本转换为模糊格式。模糊代码的输出在 SQL Server 的任何目录视图中都不能直接显示。 --对系统表或数据库文件没有访问权限的用户不能检索模糊文本 --with encryption --as --select * from passport ; --go --exec proc_temp_encryption; use PassportForm --if(OBJECT_ID('proc_cursor','p')is not null) --drop proc proc_cursor --go --create proc proc_cursor ----cursor 数据类型只能是 OUTPUT 参数,并且必须带有 VARYING 关键字 --@cur cursor varying output --as --set @cur = cursor forward_only static for --select userName,resultNo,userIp from dbo.passport; --open @cur; --go --declare @exec_cur cursor; --declare @resultNo nvarchar(10),@userName nvarchar(20), @userIP nvarchar(10); --exec proc_cursor @exec_cur output; --fetch next from @exec_cur into @userName,@resultNo,@userIP; --while(@@FETCH_STATUS =0) --begin --fetch next from @exec_cur into @userName, -- @resultNo,@userIP; --print 'userName:'+@userName --end --close @exec_cur; --deallocate @exec_cur; --if(OBJECT_ID('proc_page','p') is not null) --drop proc proc_page; --go --create proc proc_page(@pageIndex int,@pageSize int) --as --declare @startRow int, @endRow int --set @startRow=(@pageIndex-1)*@pageIndex+1 --set @endRow=@startRow+@pageSize-1; ----ROW_NUMBER():返回结果集分区内行的序列号,每个分区的第一行从 1 开始 ----OVER 子句与函数一起使用,以便计算各种聚合值 --select * from (select *, ROW_NUMBER() over(order by id desc) as number from Test.dbo.TestTable) t where t.number between @startRow and @endRow; --go --alter proc proc_page(@pageIndex int,@pageSize int) --as --declare @startRow int, @endRow int; --set @startRow=(@pageIndex-1)*@pageSize+1 --set @endRow=@startRow+@pageSize-1; --select * from (select *, ROW_NUMBER() over(order by id desc) as number from Test.dbo.TestTable) t where t.number between @startRow and @endRow; --go --exec proc_page 2,15