开拓自己

NeverDrop

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  0 随笔 :: 14 文章 :: 0 评论 :: 0 Trackbacks

-------------------------------------------------------------存储过程---------------------------------------------------
存储过程创建时就在服务器上编译了,所以比执行单个sql语句快

用exec 系统存储过程名称就可以调用,常用的有:

sp_renamedb '原数据库名','修改后的名'                作用 修改数据库名称 在master下用(这个功能比较实用)

sp_tables                                --当前数据库中而已查询的对象的列表

sp_helpindex stuMarks  查看stuMarks表的索引

Exec xp_cmdshell 'mkdir d:\bank',no_output 创建文件夹

存储过程里也可以 调用视图

用户自定义存储过程,

1:不带参数的存储过程:

create  exec proc 或者procedure  存储过程名 (过程名最好是proc_名称为好)
as
(可以在里面定义一些局部变量)
sql语句,任何都行
go

调用
Exce 存储过程名

2:带输入参数的存储过程:(每个参数 后面要有逗号)
create proc proc_name
(参数) @ mark1 int =60  (=60表示给了一个默认值,没传参数进来的时候,就用这个值),
            @ mark2 int =60  (=60表示给了一个默认值,没传参数进来的时候,就用这个值),
            @address varchar(20)
as
语句
go

调用
1:Exce proc_name  不传任何值 表示使用默认的值 (但是@address没有给默认值所以 编译后会抱错)
  没有给默认值的输入参数,我们在调用存储过程的时候要给 值
  改:Exce proc_name @address='武汉'

2:Exce proc_name 80,@address='武汉'  (只给了一个数字的参数,会默认把参数给第一个上面)

3:Exce proc_name @mark2=80  @address='武汉'  这样才会把参数给到第2个上面
(要想不传参数必须所有的参数 在定义的时候都给上默认的值)

3,带输出参数的存储过程

创建:
create proc proc_name
--(定义参数)
@ id  int output  ,  --关键字,声明为输出参数,没有的话就是输入参数。
@ hehe int =10   --输入参数
as
sql 语句 给输出参数赋值/
go
 
调用
1:定义变量:用于接受存储过程返回的结果
  declare @id int
2: exec proc_name  @id output,60 --调用的时候也得声明


--------------------------------------------------------------------错误处理--------------------------------------------
raiserror 抛出错误
例子

当我们不愿意的变量分数>100时候

if(@mark>100)
begin
//开始抛出异常
Raiserror('几个分数不能是大于100的数字',16,1)  16代表错误等几  我门最好都写16,17,18,1表示错误状态,一般存储过程里都写1
return  --立即返回,退出存储过程

end



posted on 2007-01-02 14:50 诚夏徕 阅读(120) 评论(0)  编辑  收藏 所属分类: 数据库

只有注册用户登录后才能发表评论。


网站导航: