简介:
存储过程(Stored {recedure)是在大型数据库中,一组为了完成特定功能的SQL语句集合,一次编译后永久有效,用户通过指定存储过程的名字,并给出参数,来执行它。存储过程是数据库中的一个重要对象,在数据量特别庞大的情况下利用存储过程打到倍速小效率提升
创建一个存储过程:
优点:
- 存储过程可以分装,并隐藏复杂的商业逻辑
- 存储过程可以回传值,并可以接受参数
- 存储过程无法使用select指令来运行,因为他是子程序,与查看表,数据表定义的函数不同
- 存储过程可以用在数据校验,强制实行商业逻辑等。
缺点:
- 存储过程,汪汪定制化于特定的数据局上,因为支持的编程语言不同,当切换到其它厂商的数据库系统时,需要重写原有的存储过程。
- 存储过程的性能调校与撰写,受限于各数据库类型
创建存储过程:
- IN 输入参数: 表示调用者想过程传入值(传入值可以是字面量或变量)
- OUT 输出参数: 表示过程想调用者传出值(可以返回多个值)(传出值只能是变量)
- INOUT 输入输出参数: 既表示调用者向过程传入值,有表示过程想调用者传出值(值只能是变量)
- select 查询出参
- delimiter $$ # 声明语句结束符,可以自定义
- create procedure c_users(in c_pk VARCHAR(32), OUT c_name VARCHAR(64)) # 声明存储过程 c_users()可以理解为是一个函数/方法
- BEGIN # 存储过程的开始符
- set c_pk = "8796093087748"; # 为变量赋值
-
- select p_name INTO c_name from users WHERE PK = c_pk; # 将查询结果放到 c_users中
-
- end $$ # 存储过程的结束符
- call c_users("8796093054980", @c_name) # 使用这个存储过程
- select @c_name # 查询出参
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |