存储过程
Posted ftyl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了存储过程相关的知识,希望对你有一定的参考价值。
存储过程(stored procedure)类似于C语言中的函数
用来执行管理任务或应用复杂的业务规则
存储过程可以带参数,也可以返回结果
视图封装的是select语句
存储过程封装的是tsql语句
系统存储过程 | 说明 |
sp_databases | 列出服务器上的所有数据库 |
sp_helpdb | 报告有关指定数据库或所有数据库的信息 |
sp_renamedb | 更爱数据库的名称 |
sp_tables | 返回当前环境下可查询的对象的列表 |
sp_columns | 返回某个表的列的信息 |
sp_help | 查看某个表的所有信息 |
sp_helpconstraint | 查看某个表的约束 |
sp_helpindex | 查看某个表的索引 |
sp_stored_procedures | 列出当前环境中的所有存储过程 |
sp_password | 添加或修改登陆账户的密码 |
sp_helptext | 显示默认值、未加密的存储过程,用户定义的存储过程、触发器或视图的实际文本 |
调用存储过程
execute sp_databases
或
exec sp_databases
或
sp_databases
常用的扩展存储过程:xp_cmdshell
调用语法:
exec xp_cmdshell dos命令, [no_output]
1 --创建数据库blankDB,要求保存在d:ank下 2 use master 3 go 4 exec xp_cmdshell ‘mkdir d:and‘, no_output 5 if exists(select * from sysdatabases 6 where name=‘bankDB‘ 7 drop database bankDB 8 go 9 create database bankDB( 10 ... 11 ) 12 go 13 exec xp_cmdshell ‘dir d:ank‘ --查看文件
如何创建存储过程
定义存储过程的语法:
create proc[edure] 存储过程名
@参数1 数据类型 = 默认值 output,
...,
@参数n 数据类型 = 默认值 output
as
sql 语句
go
和C语言的函数一样,参数可选
参数分为输入参数、输出参数
输入参数允许有默认值
输入参数:用于向存储过程转入值,类似C语言的按值传递;
输出参数:用于在调用存储过程后,返回结果,类似C语言的按引用传递。
带输出参数的存储过程:
如果希望调用存储过程后,返回一个或多个值,这时就需要使用输出(output)参数了
相当于c#语言中的ref/out引用传递
使用raiserror定义错误信息
raiserror(msg_id | msg_str, severity, state With option[,...n]])
一般我们只定义msg_str,severity,state就可以了
msg_id:在sysmessages系统表中指定用户定义错误信息
msg_str:用户定义的信息,最大255个字符
severity:定义错误级别,用户可使用的级别 0 - 18 级,一般16
state:表示错误的状态,1 - 127之间,一般1
option:指示是否将错误记录到服务器错误日志中
问题:
当用户调用存储过程时,传入的及格线参数不在 0 - 100 之间时,将弹出错误警告,终止存储过程的执行
1 create proc proc_stu 2 @notPassCount int output, --输出参数 3 @writtenPass int = 60, --默认参数 4 @labPass int = 60 5 AS 6 if(not @writtenPass Between 0 and 100) 7 or (not @labPass between 0 and 100) 8 begin 9 raiserror(‘及格线错误,请指定 0 - 100 之间的分数,统计中断推出。‘,16,1) 10 return --立即终止 11 end 12 ...其他tsql语句,略 13 go
以上是关于存储过程的主要内容,如果未能解决你的问题,请参考以下文章