SQL 存储过程&触发器

单个SQL语句 实现不了复杂的实际应用,需要一组SQL语句来实现,创建函数,以方便应用。

存储过程 

        可编程的函数,完成特定功能编写的SQL语句&控制语句的预编译的集合,再次调用时不再编译。

        优点:

  • 允许标准组件式编程
  • 较快的执行速度  (预编译)
  • 减少网络流量
  • 安全

存储过程的创建

        

create procedure 存储过程名 ([参数列表[,...]])
过程体;


/*参数列表 由 输入输出类型,参数名,参数类型 组成.
    [in|out|inout]  参数名 类型
*/

e.g.

delimiter $$
create procedure proc_stucent(out cnt int)
begin
           set cnt =(select count(*) from student);
end $$

delimiter ;


call proc_stucnt(@nu);

查看所有的存储过程

select * from information_schema.routines
[where routine_name = '名称'];

修改存储过程

alter procedure sp_name [characteristic ..]

characteristic"
{contains SQL | no  SQL | reads SQL data| modifies SQL data}
--alter 只能需改存储过程的特性,不能修改存储过程定义的内容


--e.g.
alter proc1 modifies sql data sql security invoker;

删除存储过程

drop  procedure [if exist] 函数名;

函数只能返回一个 返回值or表对象

存储过程 可以返回参数 如,记录集 

delimiter $$
create procedure register(username varchar(20), userpwd varchar(20))
begin
	if exists( select * from user where uname = username) then
		select 'existed';
	else 
		insert into user(uname,upwd) values(username ,userpwd);
	end if;
end $$

delimiter ;

call register('admin','123456');

e.g. 注册过程  用户名不能重复

e.g. 修改密码

delimiter $$
create procedure register(name varchar(20), oldupwd varchar(20),newpwd varchar(20))
begin
	if (select count(*) from user where upwd = oldpwd) then 
		select '不是你';
	else 
		update user set upwd=newpwd
		where uname = username;
	end if;
end $$

delimiter ;

call register('admin','123456');

相关推荐

  1. SQL 存储过程&触发器

    2023-12-12 12:04:03       45 阅读
  2. 【Oracle】PL/SQL语法、存储过程触发器

    2023-12-12 12:04:03       39 阅读
  3. SQL高级:存储过程触发器

    2023-12-12 12:04:03       36 阅读
  4. SQL 语言:存储过程触发器

    2023-12-12 12:04:03       7 阅读
  5. SQL Server查询,视图,存储过程触发器练习

    2023-12-12 12:04:03       37 阅读
  6. MySQL存储过程触发器

    2023-12-12 12:04:03       39 阅读
  7. MySQL存储过程触发器

    2023-12-12 12:04:03       31 阅读
  8. mysql的触发器存储过程

    2023-12-12 12:04:03       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-12 12:04:03       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-12 12:04:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-12 12:04:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-12 12:04:03       20 阅读

热门阅读

  1. 学习Node.js与Webpack总结

    2023-12-12 12:04:03       46 阅读
  2. React-router

    2023-12-12 12:04:03       34 阅读
  3. vue 组件实现v-model

    2023-12-12 12:04:03       45 阅读
  4. Emutouch学习笔记

    2023-12-12 12:04:03       32 阅读
  5. C++之函数指针

    2023-12-12 12:04:03       43 阅读
  6. 解决PyTorch ONNX模型每次输出结果不稳定的问题

    2023-12-12 12:04:03       42 阅读
  7. SQL Server 根据字段分组查看不是最新的记录

    2023-12-12 12:04:03       38 阅读
  8. 《C++新经典设计模式》之第8章 外观模式

    2023-12-12 12:04:03       31 阅读