数据库 存储过程的建立 调用 加密
如果对数据库的基本增、删、改、查不了解请先阅读另一篇博客
数据库的建立、增、删、改、查_做自己的靠山的博客-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)修改
修改和创建类似,就是把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'
结束:
数据库 存储过程的建立 调用 加密相关推荐
- 数据库mysql存储过程_[数据库]mysql存储过程的建立及使用
mysql存储过程的建立及使用 建立存储过程,特别是带有参数的情况反复出错,经常提示"字符串格式不正确",或者是找不到这样,找不到那样,经分细心分析.分步测试,终于上传成功,这里介 ...
- SQL server 存储过程的建立和调用
SQL server 存储过程的建立和调用 存储过程的建立和调用 --1.1准备测试需要的数据库:test,数据表:物料表,采购表 if not exists (select * from maste ...
- mysql数据库存储过程及调用方法
mysql数据库存储过程及调用方法 mysql5.0以后就支持存储过程了,目前mysql的6.0Alpha版也已经推出.6.0不仅支持大型数据库如oracle等的绝大部分功 能,如存储过程.视图.触发 ...
- python调用数据库存储过程_python调用MySql存储过程
环境: 1.mysql5.0 或者以上支持存储过程的版本 2.安装MySQL-python,目前支持到2.x 步骤: 一.数据库准备 1.建立表 CREATE TABLE `Account` ( `i ...
- JDBC对MySQL数据库存储过程的调用
一.MySQL数据库存储过程: 1.什么是存储过程 存储过程(英文:Stored Procedure)是在大型数据库系统中,为了完毕特定功能而编写的一组的SQL语句集.存储过程经编译存储在数据库中.用 ...
- 使用shell脚本调用mysql数据库存储过程,并设置定时任务
本来是要mysql数据库中创建事件任务来,定时执行存储过程,做数据传输的...后来由于种种原因,就使用crontab来定时执行,调用存储过程. 实现这个数据传输分为两步: 第一步:编写shell脚本调 ...
- jdbc存储过程mysql_JDBC对MySQL数据库存储过程的调用
1.什么是存储过程 存储过程(英文:Stored Procedure)是在大型数据库系统中,为了完成特定功能而编写的一组的SQL语句集.存储过程经编译存储在数据库中,用户通过指定存储过程的名字并给出参 ...
- 易语言 存储过程 mysql_在易语言中调用MS SQL SERVER数据库存储过程(Transact-SQL)方法总结...
作者:liigo 日期:2010/8/25 Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接 ...
- java调用数据库存储过程的接口是_JAVA调用数据库存储过程
JAVA调用数据库存储过程 2014/11/6 18:20:14 可怜的猫 程序员俱乐部 我要评论(0) 摘要:packagecom.ljq.test;importjava.sql.Connec ...
最新文章
- git命令从入门到实战,看这一篇足矣
- CentOS 5.6 修改国内网易163高速源
- HtmlAgilityPack 总结(一)
- vSphere可用性之三准备实验环境
- python html 语法高亮,在Python中使用doxygen样式文档字符串的Vim语法高亮显示
- 【SAP业务模式】之ICS(五):定价配置
- Git 的origin和master分析 push/diff/head
- linux tcp前景,linux – 为什么在Xen下TCP接受()性能如此糟糕?
- emacs工程管理,cedet ede插件自动构建Make,Automake
- C# Chart详细解析
- 计算机是uefi启动 不能装win7,如何查看电脑是不是uefi启动|查看win7系统主板是否支持UEFI模式的方法...
- 可落地的云游戏解决方案
- SylixOS操作系统自学经历(一)
- APP系列,学院专题讲座图像记录软件推荐
- Nginx搭建RTMP推拉流服务器
- 乌鸦与树(crow)
- 如何在博客插入UML图
- 成都计算机博士点,2017学位授权审核结果公示!快看四川高校新增哪些博士点?...
- 山东大学软件工程复习要点及答案
- mac系统下取消AppStore正在下载程序