光之使者 发表于 2022-8-11 12:06:31

存储过程

简介:
  存储过程(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 # 查询出参 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 存储过程