如果对数据库的基本增、删、改、查不了解请先阅读另一篇博客

  数据库的建立、增、删、改、查_做自己的靠山的博客-CSDN博客

目录

一、存储过程的建立

(1)语法:

(2)参数定义

(3)引出存储过程的使用

(4)存储过程定义建立小结

二,存储过程的调用

(1)对应赋值调用

(2)直接调用

(3)间接调用

三、加密

四、特殊的存储过程

(1)带有output参数的存储过程

(2)带有通配符参数的存储过程

五、存储过程的修改、删除

(1)修改

(2)存储过程的删除

六、常用存储过程示例

(1)as后跟 增加 语句

(2)as后跟删除语句

(3)as后跟修改语句

(4)as后给查寻语句


一、存储过程的建立

(1)语法:

 create  procedure(proce)  名字  参数1,参数2……as基本的增删改查都可以接在as后

as后可以可跟sql的 增删改查

(2)参数定义

定义参数、变量必须有@符号

  • @X 局部变量
  • @@X全局变量

(3)引出存储过程的使用

思考下面问题:

在学生表中查询指定学号的学生的全部信息?

这时我们可以先简化问题:

查询学号为 201215121 的学生信息 ,那就是一个简单的单表查询问题了

代码如下:

select *from Studentwhere  Sno='201215121'

回到最初的问题指定学号

  • 我们可以先建立一个存储过程
  • 在调用存储过程时输入指定的实参赋给形参即可解决

存储过程的定义:

存储过程就是把已知的换成形参,并定义用到的形参


create procedure select_name @Sno char(9)
asselect *from Studentwhere  Student.Sno=@Sno 

调用实参:

这里调用就不详讲,下面会详细讲解

exec select_name1 '201215121'

(4)存储过程定义建立小结

存储过程定义好,就像是鞭炮做好了,要点火才会有效果,所以存储过程定义好要想有结果,一定要调用

二,存储过程的调用

(1)对应赋值调用

execute(exec)  存储过程名  '实参1','实参2',……

eg:调用前面定义的存储过程

exec select_name1 '201215121'

(2)直接调用

execute(exec)  存储过程名  形参1='实参1',形参2='实参2',……

eg:调用前面定义的存储过程

exec select_name1 @Sno='201215121'

(3)间接调用

Declare 参数
Set 参数 =‘存储过程名’
Exectue(exec)参数  +(上述两种调用方法都可以)

eg:调用前面定义的存储过程

declare @str char(20)
set @str='select_name1'
exec @str @Sno='201215121'

三、加密

使用WITH ENCRYPTION选项。WITH ENCRYPTION子句用于对用户隐藏存储过程的文本。

eg:创建一个加密的存储过程和一个不加密的存储过程

//加密存储过程
create procedure select_name1 @Sno char(9) WITH ENCRYPTIONasselect *from Studentwhere  Student.Sno=@Sno //不加密的存储过程create procedure select_name @Sno char(9)
asselect *from Studentwhere  Student.Sno=@Sno 

使用 sp_helptext 系统存储过程获取关于加密过程的信息和没加密的存储过程,运行结果如下:

  EXEC sp_helptext select_name1EXEC sp_helptext select_name

四、特殊的存储过程

(1)带有output参数的存储过程

创建一个存储过程do_insert,作用是向student表中插入一行数据。创建另外一个存储过程do_action,在其中调用第一个存储过程,并根据条件处理该行数据,处理后输出相应的信息。

  CREATE PROCEDURE do_insertASINSERT INTO Student VALUES('091201', '陶伟', '男', 21, 'ma');CREATE PROCEDURE do_action @X char(2), @STR CHAR(8) OUTPUT
ASBEGIN EXEC do_insertIF @X='女'BEGINUPDATE student SET sname='刘英', ssex='女' WHERE sno='091201'SET @STR='修改成功'ENDELSEIF @X='男'BEGINDELETE FROM student WHERE sno='091201'SET @STR='删除成功'ENDEND

可以类比c语言中函数调用来理解

调用该存储过程:

declare @str char(8)
exec do_action @X='女',@str=@str output
select @str

注意:

  • 这个里面的begin可以理解为c语言里面的{
  • End可以理解为 }  也就是这个语句的作用范围

(2)带有通配符参数的存储过程

查询某个姓 的学生信息

CREATE PROCEDURE st_info @sname varchar(30) = '李%'AS SELECT student.sno,sname,cname,gradeFROM  student   JOIN  sc  JOIN course ON course.cno= sc.cno ON student.sno =sc.sno  WHERE sname LIKE @sname

当存储过程定义的时候就直接给参数赋值了(就相当于默认参数,如上述例子就是默认为姓李的学生信息)

调用这种类型的存储过程的时候就有几种情况了

  1. 有默认,调用没有传实参 (就用默认参数)
  2. 有默认,调用也传实参 (就用实参)
  3. 都没得,(查不出来报不报错我没试)

五、存储过程的修改、删除

(1)修改

修改和创建类似,就是把create 改为  alter  可参照基本表的相关操作(查看文末链接)

eg:将定义好的的存储过程student_info1的第一个参数进行修改

ALTER PROCEDURE student_info1@sno char(6),@cname char(16) AS SELECT student.sno, cname, gradeFROM  sc, course
WHERE  sno=@sno AND cname=@cname

(2)存储过程的删除

eg:

删除XSCJ数据库中的student_info存储过程。

IF EXISTS(SELECT name FROM sysobjects WHERE name='student_info')DROP PROCEDURE student_info

六、常用存储过程示例

(1)as后跟 增加 语句

eg:建立一个向SC表中插入指定学号、指定课程号、指定成绩的存储过程

create proc insert_sc @sno char(12),@cno char(4),@grade smallint
as
insert into SC
values(@sno,@cno,@grade)//调用exec insert_sc @sno='201230402101',@cno='7',@grade=100

(2)as后跟删除语句

eg:定义删除SC中指定学号的学生信息的存储过程

create proc delete_sc @sno char(12)
as
delete from sc
where Sno=@sno//调用
exec delete_sc @sno='201230402109'

(3)as后跟修改语句

eg:定义将指定学号的学生成绩加10分的存储过程

create proc update_sc @sno char(12)
as
update  sc
set
Grade=Grade+10
where Sno=@sno//调用
exec update_sc @sno='201230402108'

(4)as后给查寻语句

eg:定义查询Student表中指定学号的学生信息的存储过程

create proc select_student @sno char(12)
as
select *
from Student
where Sno=@sno//调用
exec select_student @sno='201230402101'

结束:

数据库 存储过程的建立 调用 加密相关推荐

  1. 数据库mysql存储过程_[数据库]mysql存储过程的建立及使用

    mysql存储过程的建立及使用 建立存储过程,特别是带有参数的情况反复出错,经常提示"字符串格式不正确",或者是找不到这样,找不到那样,经分细心分析.分步测试,终于上传成功,这里介 ...

  2. SQL server 存储过程的建立和调用

    SQL server 存储过程的建立和调用 存储过程的建立和调用 --1.1准备测试需要的数据库:test,数据表:物料表,采购表 if not exists (select * from maste ...

  3. mysql数据库存储过程及调用方法

    mysql数据库存储过程及调用方法 mysql5.0以后就支持存储过程了,目前mysql的6.0Alpha版也已经推出.6.0不仅支持大型数据库如oracle等的绝大部分功 能,如存储过程.视图.触发 ...

  4. python调用数据库存储过程_python调用MySql存储过程

    环境: 1.mysql5.0 或者以上支持存储过程的版本 2.安装MySQL-python,目前支持到2.x 步骤: 一.数据库准备 1.建立表 CREATE TABLE `Account` ( `i ...

  5. JDBC对MySQL数据库存储过程的调用

    一.MySQL数据库存储过程: 1.什么是存储过程 存储过程(英文:Stored Procedure)是在大型数据库系统中,为了完毕特定功能而编写的一组的SQL语句集.存储过程经编译存储在数据库中.用 ...

  6. 使用shell脚本调用mysql数据库存储过程,并设置定时任务

    本来是要mysql数据库中创建事件任务来,定时执行存储过程,做数据传输的...后来由于种种原因,就使用crontab来定时执行,调用存储过程. 实现这个数据传输分为两步: 第一步:编写shell脚本调 ...

  7. jdbc存储过程mysql_JDBC对MySQL数据库存储过程的调用

    1.什么是存储过程 存储过程(英文:Stored Procedure)是在大型数据库系统中,为了完成特定功能而编写的一组的SQL语句集.存储过程经编译存储在数据库中,用户通过指定存储过程的名字并给出参 ...

  8. 易语言 存储过程 mysql_在易语言中调用MS SQL SERVER数据库存储过程(Transact-SQL)方法总结...

    作者:liigo 日期:2010/8/25 Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接 ...

  9. java调用数据库存储过程的接口是_JAVA调用数据库存储过程

    JAVA调用数据库存储过程 2014/11/6 18:20:14  可怜的猫  程序员俱乐部  我要评论(0) 摘要:packagecom.ljq.test;importjava.sql.Connec ...

最新文章

  1. git命令从入门到实战,看这一篇足矣
  2. CentOS 5.6 修改国内网易163高速源
  3. HtmlAgilityPack 总结(一)
  4. vSphere可用性之三准备实验环境
  5. python html 语法高亮,在Python中使用doxygen样式文档字符串的Vim语法高亮显示
  6. 【SAP业务模式】之ICS(五):定价配置
  7. Git 的origin和master分析 push/diff/head
  8. linux tcp前景,linux – 为什么在Xen下TCP接受()性能如此糟糕?
  9. emacs工程管理,cedet ede插件自动构建Make,Automake
  10. C# Chart详细解析
  11. 计算机是uefi启动 不能装win7,如何查看电脑是不是uefi启动|查看win7系统主板是否支持UEFI模式的方法...
  12. 可落地的云游戏解决方案
  13. SylixOS操作系统自学经历(一)
  14. APP系列,学院专题讲座图像记录软件推荐
  15. Nginx搭建RTMP推拉流服务器
  16. 乌鸦与树(crow)
  17. 如何在博客插入UML图
  18. 成都计算机博士点,2017学位授权审核结果公示!快看四川高校新增哪些博士点?...
  19. 山东大学软件工程复习要点及答案
  20. mac系统下取消AppStore正在下载程序

热门文章

  1. 机器学习——XGboost模型
  2. 【2022年度总结与2023展望】---22年故事不长,且听我来讲
  3. python 标签字体大小,Python:如何增加/减少x和y刻度标签的字体大小?
  4. SVM-SMO算法C++实现
  5. 机器学习笔记——支持向量机SMO算法完整版代码分析
  6. 下一代个性化推荐系统
  7. 隐马尔可夫模型与语音识别
  8. Picovoice离线语音识别在Linux系统的部署
  9. 开放大世界 codelikeme
  10. 用MPAndoidChart展示搜索到的GPS及卫星信息