存储过程的一些讲解
来源:互联网 发布:js 数组函数 filter 编辑:程序博客网 时间:2024/05/16 04:46
--得到系统中的数据库
select *from sysdatabases
--以存储过程的方式获取
--exec执行
--使用系统存储过程的语法 exec存储过程名(参数列表)
exec sp_databases
--查询selltb相关的信息
exec sp_help 'selltb'
--数据库相关活动信息
exec sp_helpdb
--重命名(执行时注意其他的活动窗口要关闭)
exec sp_renamedb 'sales','newsaledb'
--显示表student常用的列字段
exec sp_columns student
--
EXEC xp_cmdshell cmd
--查看注册表信息
EXEC xp_cmdshell regedit
select *from student
/*
create proc 存储过程名
as
begin
业务逻辑
end
*/
--利用存储过程查找出id>4的学生
create proc getstu
as
begin
select *from student where stuid>4
end
--调用存储过程 exec自定义存储过程名称【参数值】
exec getstu
--采用游标的方式将id>4的学生姓名显示出来
--修改存储过程的关键字 alter
alter proc getstu
as
begin
--变量的声明
declare @stuname varchar(20)
declare stu_cursor cursor for select stuname from student
--开启游标
open stu_cursor
--从游标中取值
fetch next from stu_cursor into @stuname
--不为空且取数据正常时 循环取值
while @@fetch_status=0
begin
print @stuname
fetch next from stu_cursor into @stuname
end
--关闭游标
close stu_cursor
--销毁游标
deallocate stu_cuesor
end
alter proc getstu
--输入参数的声明 如果参数有多个 中间用逗号隔开
--给@stuid设置默认值
@stuid int
as
begin
--变量的声明
declare @stuname varchar(20)
declare stu_cursor cursor for select stuname from student where stuid>@stuid
--开启游标
open stu_cursor
--从游标中取值
fetch next from stu_cursor into @stuname
--不为空且取数据正常时 循环取值
while @@fetch_status=0
begin
print @stuname
fetch next from stu_cursor into @stuname
end
--关闭游标
close stu_cursor
--销毁游标
deallocate stu_cuesor
end
--调用带输入参数的存储过程 exec自定义存储过程名称[参数值]
exec getstu 1
--以下为第二种传参方式 只需要确保参数和存储过程中的参数名一致即可
exec getstu @stuid=1
--将stuid以动态方式经行值的专递
--输入参数
alter proc getstu
--输入参数的声明 如果参数有多个 中间用逗号隔开
--给@stuid设置默认值
@stuid int=2
as
begin
--变量的声明
declare @stuname varchar(20)
declare stu_cursor cursor for select stuname from student where stuid>@stuid
--开启游标
open stu_cursor
--从游标中取值
fetch next from stu_cursor into @stuname
--不为空且取数据正常时 循环取值
begiwhile @@fetch_status=0n
print @stuname
fetch next from stu_cursor into @stuname
end
--关闭游标
close stu_cursor
--销毁游标
deallocate stu_cuesor
end
--采用输入参数的默认值
exec getstu
--调用带输入参数的存储过程的两种方式 覆盖了默认值
exec getstu 4
exec getstu @stuid=3
--带有输出和输入参数的存储过程
--根据传入的学生id 查找学生的姓名
create proc getstuinfo
@stname varchar(30) output,
@stuid int
as
begin
select @stname=stuname from student where stuid=@stuid
end
--存储过程的调用
declare @stname varchar(20)
begin
exec getstuinfo @stname output,3
print '学生的姓名:'+@stname
end
select *from student
--存储过程中的错误处理
--raiserror函数的应用
--用户指定id查找学生信息 如果查找不到 则会给出警告
--第一步创建存储过程 参数不变
--第二步判断是否存在指定id的用户
--第一种
create proc getstudent
@stname varchar(30) output,
@stuid int
as
begin
if (not exists(select stuid from student where stuid=@stuid))
raiserror('你所查找的学生不存在!',16,1)
end
--存储过程调用
declare @stname varchar(20)
begin
exec getstudent @stname output,10
print '学生的姓名:'+@stname
end
--第二种
create proc getstudent1
@stname varchar(30) output,
@stuid int
as
declare @countnum int
begin
select @countnum=count(*)from student where stuid=@stuid
if(@countnum=0)
begin
raiserror('你所查找的学生不存在!',16,1)
end
end
--存储过程调用
declare @stname varchar(20),
@errornum int
begin
exec getstudent1 @stname output,10
print '学生的姓名:'+@stname
print'错误号'+convert(varchar(20),@@error)
end
/*
利用存储过程对数据经行分页
题目要求 1表名,分页大小,分页的主键字段都可以动态的专递
2返回能够分的页数 当前页得编码
*/
create proc operpag
@pagenum int output,
@nowpag int output,
@pagesize int=2,
@pid int,
@tbname varchar(30)='student'
as
declare @sql nvarchar(200)
begin
select @sql=' select top '+cast(@pagesize as varchar)+' * from '+@tbname+' where '
+@pid+' not in ( '+' select top '+cast((@pagesize*@pagenum)as varchar)+''+@pid+' from
'+@tbname+')'
print @sql
end
declare @pid int,
@pagenum int,
@newpag int,
@errornum int
begin
exec operpag @pid output,4
print'当前页数是:'+@pid
print'错误号'+convert(varchar(20),@@error)
select *from sysdatabases
--以存储过程的方式获取
--exec执行
--使用系统存储过程的语法 exec存储过程名(参数列表)
exec sp_databases
--查询selltb相关的信息
exec sp_help 'selltb'
--数据库相关活动信息
exec sp_helpdb
--重命名(执行时注意其他的活动窗口要关闭)
exec sp_renamedb 'sales','newsaledb'
--显示表student常用的列字段
exec sp_columns student
--
EXEC xp_cmdshell cmd
--查看注册表信息
EXEC xp_cmdshell regedit
select *from student
/*
create proc 存储过程名
as
begin
业务逻辑
end
*/
--利用存储过程查找出id>4的学生
create proc getstu
as
begin
select *from student where stuid>4
end
--调用存储过程 exec自定义存储过程名称【参数值】
exec getstu
--采用游标的方式将id>4的学生姓名显示出来
--修改存储过程的关键字 alter
alter proc getstu
as
begin
--变量的声明
declare @stuname varchar(20)
declare stu_cursor cursor for select stuname from student
--开启游标
open stu_cursor
--从游标中取值
fetch next from stu_cursor into @stuname
--不为空且取数据正常时 循环取值
while @@fetch_status=0
begin
print @stuname
fetch next from stu_cursor into @stuname
end
--关闭游标
close stu_cursor
--销毁游标
deallocate stu_cuesor
end
alter proc getstu
--输入参数的声明 如果参数有多个 中间用逗号隔开
--给@stuid设置默认值
@stuid int
as
begin
--变量的声明
declare @stuname varchar(20)
declare stu_cursor cursor for select stuname from student where stuid>@stuid
--开启游标
open stu_cursor
--从游标中取值
fetch next from stu_cursor into @stuname
--不为空且取数据正常时 循环取值
while @@fetch_status=0
begin
print @stuname
fetch next from stu_cursor into @stuname
end
--关闭游标
close stu_cursor
--销毁游标
deallocate stu_cuesor
end
--调用带输入参数的存储过程 exec自定义存储过程名称[参数值]
exec getstu 1
--以下为第二种传参方式 只需要确保参数和存储过程中的参数名一致即可
exec getstu @stuid=1
--将stuid以动态方式经行值的专递
--输入参数
alter proc getstu
--输入参数的声明 如果参数有多个 中间用逗号隔开
--给@stuid设置默认值
@stuid int=2
as
begin
--变量的声明
declare @stuname varchar(20)
declare stu_cursor cursor for select stuname from student where stuid>@stuid
--开启游标
open stu_cursor
--从游标中取值
fetch next from stu_cursor into @stuname
--不为空且取数据正常时 循环取值
begiwhile @@fetch_status=0n
print @stuname
fetch next from stu_cursor into @stuname
end
--关闭游标
close stu_cursor
--销毁游标
deallocate stu_cuesor
end
--采用输入参数的默认值
exec getstu
--调用带输入参数的存储过程的两种方式 覆盖了默认值
exec getstu 4
exec getstu @stuid=3
--带有输出和输入参数的存储过程
--根据传入的学生id 查找学生的姓名
create proc getstuinfo
@stname varchar(30) output,
@stuid int
as
begin
select @stname=stuname from student where stuid=@stuid
end
--存储过程的调用
declare @stname varchar(20)
begin
exec getstuinfo @stname output,3
print '学生的姓名:'+@stname
end
select *from student
--存储过程中的错误处理
--raiserror函数的应用
--用户指定id查找学生信息 如果查找不到 则会给出警告
--第一步创建存储过程 参数不变
--第二步判断是否存在指定id的用户
--第一种
create proc getstudent
@stname varchar(30) output,
@stuid int
as
begin
if (not exists(select stuid from student where stuid=@stuid))
raiserror('你所查找的学生不存在!',16,1)
end
--存储过程调用
declare @stname varchar(20)
begin
exec getstudent @stname output,10
print '学生的姓名:'+@stname
end
--第二种
create proc getstudent1
@stname varchar(30) output,
@stuid int
as
declare @countnum int
begin
select @countnum=count(*)from student where stuid=@stuid
if(@countnum=0)
begin
raiserror('你所查找的学生不存在!',16,1)
end
end
--存储过程调用
declare @stname varchar(20),
@errornum int
begin
exec getstudent1 @stname output,10
print '学生的姓名:'+@stname
print'错误号'+convert(varchar(20),@@error)
end
/*
利用存储过程对数据经行分页
题目要求 1表名,分页大小,分页的主键字段都可以动态的专递
2返回能够分的页数 当前页得编码
*/
create proc operpag
@pagenum int output,
@nowpag int output,
@pagesize int=2,
@pid int,
@tbname varchar(30)='student'
as
declare @sql nvarchar(200)
begin
select @sql=' select top '+cast(@pagesize as varchar)+' * from '+@tbname+' where '
+@pid+' not in ( '+' select top '+cast((@pagesize*@pagenum)as varchar)+''+@pid+' from
'+@tbname+')'
print @sql
end
declare @pid int,
@pagenum int,
@newpag int,
@errornum int
begin
exec operpag @pid output,4
print'当前页数是:'+@pid
print'错误号'+convert(varchar(20),@@error)
end
最后娱乐一下 一部很好看的儿童动漫:蛋计划http://www.iqiyi.com/v_19rrnegutc.html
0 0
- 存储过程的一些讲解
- C# 数据库存储过程的讲解应用
- 一些SQL的存储过程
- 存储过程的一些应用
- 存储过程的一些积累
- 存储过程的一些东西
- 存储过程的一些经验
- MySQL存储过程讲解
- 存储过程讲解
- 开发存储过程的一些建议
- 自己整理的一些分页存储过程
- 一些有用的系统存储过程.
- 使用存储过程的一些小提示!
- 关于存储过程的一些tips
- C# 执行存储过程的一些经验
- 使用存储过程遇到的一些问题
- 对存储过程的一些理解
- 存储过程的好处和一些注意事项
- easyui datagrid 默认方式分页
- Android自定义“图片+文字”控件四种实现方法
- ios 定位bug闪退,崩溃点
- 理解stl内存管理方式和cocos2dx不符
- LeetCode(150) Evaluate Reverse Polish Notation
- 存储过程的一些讲解
- UI设计规范
- 如何在linux中进行全局按文件类型搜索
- iOS 开发 - CollectionView Test 记录
- shadow
- Linux下使用vsftpd架设FTP服务平台(下篇)
- swift语言笔记——变量与常量
- 深入浅出设计模式——工厂方法模式(Factory Method)
- Android控件Gallery3D效果