一.需求:有三张表,分表是学生表,科目表和分数表:
要求:创建一个带输出参数的存储过程,输出的参数有两个,第一个输出参数的值为分数总分/总人数,第二输出参数的值为分数总分*总人数
1.学生表(学生号,学生姓名,学生地址)
2.科目表(科目编码,科目名称)
3.分数表(学生号,科目编码,分数)
二.创建输出参数的存储过程
CREATE PROCEDURE
proc_auto_date2
(
out ave FLOAT,out sum1 FLOAT)
begin
DECLARE score1 FLOAT; – 声明变量score1
DECLARE number1 int; – 声明变量number1
set ave=0; – 设置ave输出参数的默认值为0
set sum1=0; – 设置sum1输出参数的默认值为0
select sum(score) from score into score1; – score1变量值
select count(
) from student into number1; – number1变量值
select score1/number1 into ave; – ave变量值
– set ave=score1/number;
select score1
number1 into sum1; – sum1变量值
select ave; – 输出ave
select sum1; --输出sum1
end
三.调用带输出参数的存储过程
1)使用call proc_auto_date2(@ave,@sum1);
调用成功之后,可以使用
select @ave – 单独输出@ave的值
select @sum1 – 单独输出@sum1的值
select @ave,@sum1 – 同时输出@ave,@sum1的值
2)或者直接找到存储过程,直接运行
四.创建一个带输出参数的存储过程,要求调用上一个存储过程的值
要求:call proc_auto_date2(@ave,@sum1)的@ave,@sum1值进行求和
CREATE PROCEDURE
proc_auto_date3
(
out test1 int)
– test1为输出参数
begin
declare number2 int;
declare ave FLOAT; – 声明ave为存储过程proc_auto_date2的第一个输出参数
declare sum1 FLOAT; – 声明sum1为存储过程proc_auto_date2的第二个输出参数
set number2=200;
– 调用存储过程 proc_auto_date2(ave,sum1)
call proc_auto_date2(ave,sum1) ;
– 将存储过程proc_auto_date2的两个输出参数的和+number2变量的值赋值给test1输出参数
set test1=@ave+@sum1+number2;
select test1;
end
调用存储过程:
五. 删除存储过程
DROP PROCEDURE 存储过程名
DROP PROCEDURE proc_auto_date3
一.需求:有三张表,分表是学生表,科目表和分数表:要求:创建一个带输出参数的存储过程,输出的参数有两个,第一个输出参数的值为分数总分/总人数,第二输出参数的值为分数总分*总人数1.学生表(学生号,学生姓名,学生地址)2.科目表(科目编码,科目名称)3.分数表(学生号,科目编码,分数)二.创建输出参数的存储过程CREATE PROCEDURE proc_auto_date2(out ave FLOAT,out sum1 FLOAT)beginDECLARE score1 FLOAT; –
-- 定义
中
转表,结构与你需要输出的一致,但需要增加 sessionId 和 addTime,
-- sessionId 防止并发时出现无法辨别的问题
-- addTime 记录插入时间,便于观察
IF OBJECT_ID('dbo.tmp_transfer1') IS NOT NULL DROP TABLE tmp_tran...
在
MySQL
中
,可以使用 CALL 语句来
调用
另
一个
存储过程
。以下是
一个
示例:
假设有两个
存储过程
,分别为 proc1 和 proc2。proc1 接受
一个
参数,然后
调用
proc2,并将参数传递给 proc2。
proc1 的定义如下:
DELIMITER //
CREATE PROCEDURE proc1(param1 INT)
BEGIN
-- 执行一些操作
CALL proc2(param1);
-- 执行一些操作
END//
DELIMITER ;
proc2 的定义如下:
DELIMITER //
CREATE PROCEDURE proc2(param1 INT)
BEGIN
-- 执行一些操作,使用参数 param1
END//
DELIMITER ;
在上面的例子
中
,当
调用
proc1 时,它将接受
一个
参数 param1,并将其传递给 proc2。要
调用
proc1,可以使用以下语法:
CALL proc1(123);
这将
调用
proc1 并将参数 123 传递给它。然后,proc1 将
调用
proc2 并将参数 123 传递给它。
数组函数+split函数:if(len(INDEXOFARRAY(split($$$,‘,‘),1))==0,‘‘,TOIMAGE(INDEXOFARRAY(split($$$,‘,‘),1)))
Find_in_set()函数的使用及in()用法详解