存储过程自学
来源:互联网 发布:多路访问网络 编辑:程序博客网 时间:2024/09/21 06:46
**存储过程:
概念:procedure存储过程是为了完成一组特定功能的sql语句的集合,经过编译后存储在数据库中,用户通过指定存储过程的名称并且给出参数来调用执行!
特点:1:存储过程可以包括逻辑控制语句和数据操纵语句(DML)。
2:存储过程可以接收参数,输出参数,返回单个或者多个结果集以及返回值。
3:存储过程由于在创建的时候就进行了编译并且存储在数据库当中,所以运行效率上要快于一般SQL。
优点:1:代码重复调用:可以多次被调用执行,无需重新编写该存储过程的sql语句。开发人员可以随时都存储过程的sql语句进行更改,而对代码来说毫无影响提高了代 码的可移植性。
2:运行效率:存储过程可以是预编译的,所以运行效率远远大于批处理的sql语。(因为批处理语句是每执行一次就编译一次)
3:减轻网络流量:当程序调用存储过程的时候,网络中传递的只是该调用语句,否则将会是多条sql语句。从而减少了网络流量,降低了网络负载。
4:系统管理员可以对执行的某一个存储过程进行权限限制,实现对某些数据的访问限制,提高数据的安全性。
创建存储过程:
create proc proc_get_student
as //as可以省略不写
select * from student;
调用执行存储过程:
exec proc_get_student
创建带参数的存储过程: create proc proc_find_stu(@startId int, @endId int) as select * from student where id between @startId and @endId go exec proc_find_stu 2, 4; 带通配符的存储过程: ``` create proc proc_findStudentByName(@name varchar(20) = '%j%', @nextName varchar(20) = '%') as select * from student where name like @name and name like @nextName; go exec proc_findStudentByName; exec proc_findStudentByName '%o%', 't%'; ``` 带有局部变量的存储过程: ``` CREATE PROCEDURE UserLogin @name varchar(20), --全局变量不需要用declare。 @password varchar(20) AS -- 定义一个临时用来保存密码的变量 --DECLARE @strPwd NVARCHAR(20) --局部变量需要用declare来表示。 BEGIN select * from userinfo where userName=@name and userPass=@password END GO 首先我们用简单的sql查询 select * from userinfo where userName='admin' 查询结果: --------------------- UserName UserPass Admin Admin 现在我们来执行我们的存储过程 exec UserLogin admin,admin --或这样调用: EXEC UserLogin @name='admin',@password='admin' 查询结果: --------------------- UserName UserPass Admin Admin ``` 带有输出参数的存储过程: ``` create proc proc_getStudentRecord( --全局参数 @id int, --默认输入参数 @name varchar(20) out, --输出参数 @age varchar(20) output--输入输出参数 ) as select @name = name, @age = age from student where id = @id and sex = @age; go --局部参数 declare @id int, @name varchar(20), @temp varchar(20); set @id = 7; set @temp = 1; exec proc_getStudentRecord @id, @name out, @temp output; select @name, @temp; print @name + '#' + @temp;
“`
- 存储过程自学
- Mysql自学笔记五(存储过程)
- MysQL自学笔记8--索引、存储过程
- java自学之路-----jdbc_分页查询,大数据,批处理,存储过程
- 嵌入式linux自学过程
- Html5自学过程笔记
- node自学过程记录
- Linux自学过程(1)
- 存储过程
- 存储过程
- 存储过程
- 存储过程
- 存储过程
- 存储过程
- 存储过程
- 存储过程
- 存储过程
- 存储过程
- Android的布局ViewStub
- c++ 中__declspec 的用法
- magento 计划任务
- (1,eval)('this')释义
- Qt基础: 信号和槽
- 存储过程自学
- 使用Maven创建Web项目
- 神经网络研究,计算机是否能推理?
- pushlet单播与多播
- 6.9.1.2 qmgr_entry_done:清理活动数据
- 在网页中使用SVG技术
- spark1.6统一内存管理(UnifiedMemoryManager)
- 华为OJ-名字的漂亮度
- MySQL Tutorial(2)