重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
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);
这样:
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 过程名
DELIMITER $$
USE `test`$$
DROP PROCEDURE IF EXISTS `proc_now_time`$$
CREATE DEFINER=`root`@`%` PROCEDURE `proc_now_time`(OUT `now_time` TEXT)
BEGIN
#Routine body goes here...
DECLARE
now_time TEXT;
select name ,age from test1,test2 INTO now_time;
SELECT now_time;
END$$
DELIMITER ;