SQL3

2022/2/25 19:21:54

本文主要是介绍SQL3,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

--SQLServer数据库本身已经自带了一些存储过程,这些存储过程可以完成独立的功能
--系统存储过程的命名都是以'SP_'开头

--列出服务器上所有数据库
exec sp_databases
--获取指定数据库或所有数据库的信息
exec sp_helpdb
exec sp_helpdb 'db_mydb'
--重命名数据库
exec sp_renamedb 'db_test','db_mydb'
--列出当前数据库中所有数据表
exec sp_tables;
--获取到指定表的所有字段信息
exec sp_columns 'tb_students'
--列出当前数据库下所有的对象信息
exec sp_help
exec sp_help 'tb_students'
--获取指定表的约束信息
exec sp_helpconstraint 'tb_students'
--获取指定表的索引信息
exec sp_helpindex 'tb_students'
--列出当前数据库下所有的存储过程
exec sp_stored_procedures
--修改当前账号的密码
exec sp_password 'admin321','admin123'
--查看指定的存储过程的"源码",以文本的形式返回
exec sp_helptext 'sp_password'

 


--自定义存储过程(存储过程也是有"输入参数"和"输出参数(返回值)"的)
create procedure <proc_name>
[参数列表]
as
[过程体]
go

--无输入参数无输出参数
create procedure proc_test1
as
select * from tb_students;
go
--调用
exec proc_test1;

 

--无输入参数有输出参数
create procedure proc_test2
@age int OUTPUT
as
select @age = avg(stu_age) from tb_students;
go
--调用
exec proc_test

declare
@m int;
begin
exec proc_test2 @m output;
print @m
end;

 

--有输入参数无输出参数
create procedure proc_test3
@snum char(10)
as
select * from tb_students where stu_num=@snum
go
--调用
exec proc_test3 '2013030231';

 

--有输入参数有输出参数

create procedure proc_test4
@snum char(10),
@name varchar(20) output,
@sex char(2) output,
@age int output
as
select @name=stu_name,@sex=stu_sex,@age=stu_age from tb_students;
go
--调用
declare
@snum char(10),
@n varchar(20),
@s char(2),
@a int
begin
set @snum = '2013030231';
exec proc_test4 @snum,@n output,@s output,@a output;
print @n;
print @s;
print @a;
end;

select * from tb_students;

 

 


--创建一个存储过程,完成tb_students分页
create procedure proc_splitPage
@pageSize int, --每一页的长度
@pageNum int, --页码
@pageCount int output --总页数
as
declare @count int;
--根据总记录数和每页显示的条数,来计算总页数
select @count=count(*) from tb_students;
if(@count%pageSize=0)begin
set @pageCount = @count/@pageSize;
end
set @pageCount = @count/pageSize+1;
--保证pageNum的值在1~@pageCount的范围内
if(@pageNum<1)begin
set @pageNum = 1
end
if(@pageNum>@pageCount)begin
set @pageNum = @pageCount
end
--进行分页查询
select top(@pageSize) * from tb_students where stu_num not in
(select top(@pageSize*(@pageNum-1)) stu_num from tb_students);
go

declare
@pc int
begin
exec proc_splitPage 5,2,@pc output;
print @pc;
end

 

 


--drop proc proc_splitPage;

 



这篇关于SQL3的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程