MySQL里面sql语句调用存储过程,该如何写?

MySQL里面sql语句调用存储过程,该如何写?,第1张

这样:

CREATE PROCEDURE sp_add(a int, b int,out c int)

begin

set c=a+ b

end

调用过程

call sp_add (1,2,@a)

select @a

扩展资料:

注意事项

存储过程(stored procedure)是一组为了完成特定功能的SQL语句集合,经编译后存储在服务器端的数据库中,利用存储过程可以加速SQL语句的执行。

存储过程分为系统存储过程和自定义存储过程。

系统存储过程在master数据库中,但是在其他的数据库中可以直接调用,并且在调用时不必在存储过程前加上数据库名,因为在创建一个新数据库时,系统存储过程在新的数据库中会自动创建。

自定义存储过程,由用户创建并能完成某一特定功能的存储过程,存储过程既可以有参数又有返回值,但是它与函数不同,存储过程的返回值只是指明执行是否成功,并不能像函数那样被直接调用,只能利用execute来执行存储过程。

创建存储过程

SQL Server创建存储过程:

create procedure  过程名

@parameter       参数类型

@parameter      参数类型

。。。

as

begin

end

执行存储过程:execute 过程名

1、delimiter // ,声明分隔符:DELIMITER是分割符的意思,因为MySQL默认以""为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将""当做存储过程中的代码,不会执行这些代码(这里如果不懂的话,你可以通过试错的方法来理解)。2、编写存储过程的格式:CREATE PROCEDURE([[IN |OUT |INOUT ]参数名数据类形...])例子:1)create procedure proc1(out s int) // 只有输出2)create procedure proc2(in p_in bigint) // 只有输入3)create procedure proc15() // 没有输入与输出4)create procedure demo_multi_param(in id bigint,in name varchar(32),out c int) //多输入与输出3、过程体的开始与结束使用BEGIN与END进行标识。4、select count (*) into s from student// 过程体,一系列的逻辑语句,sql语句5、delimiter 用完了之后要把分隔符还原。

创建存储过程

mysql>delimiter $ -- delimiter $是设置 $为命令终止符号,代替默认的分号,因为分号有其他用处.

mysql>create procedure sp_test(IN pi_id int, OUT po_name varchar(10))

->begin

->select * from test.tb_test

->select tb_test.name into po_name from test.tb_test where tb_test.id = pi_id

->end

->$

Query OK, 0 rows affected (0.00 sec)

mysql>delimiter -- 恢复分号作为分隔终止符号

5.调用存储过程

mysql>set@po_name=''

Query OK, 0 rows affected (0.00 sec)

mysql>call sp_test(1,@po_name)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6096023.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-14
下一篇 2023-03-14

发表评论

登录后才能评论

评论列表(0条)

保存