例一:
--表格
mysql> select corderno,mshippingcharges,mgiftwrapcharges from orders;
+----------+------------------+------------------+
| corderno | mshippingcharges | mgiftwrapcharges |
+----------+------------------+------------------+
| 000001 | 6 | 1.25 |
| 000002 | 8 | 2 |
| 000003 | 12 | 0 |
+----------+------------------+------------------+
9 rows in set
--
create procedure prccharges(in orderno char(6),
out shippingCharges float(4,2),out wrapCharges float(4,2))
begin
select mshippingcharges into shippingCharges from
orders where corderno = orderno;
select mgiftwrapcharges into wrapcharges from orders where corderno = orderno;
end;
--执行时命令
call prccharges('000001',@pp,@qq);
select @pp,@qq;
--执行结果
mysql> select @pp,@qq;
+-----+------+
| @pp | @qq |
+-----+------+
| 6 | 1.25 |
+-----+------+
1 row in set
create procedure prcHandLingCharges(in orderno char(6),
out handlingCharges float(4,2))
begin
declare ppp float(4,2);
declare qqq float(4,2);
call prccharges(orderno,ppp,qqq);
set handlingCharges = ppp + qqq;
end;
--执行时命令
call prcHandLingCharges('000001',@qqqq);
select @qqqq;
--执行结果
mysql> select @qqqq;
+-------+
| @qqqq |
+-------+
| 7.25 |
+-------+
1 row in set
mysql> select corderno,mshippingcharges,mgiftwrapcharges from orders;
+----------+------------------+------------------+
| corderno | mshippingcharges | mgiftwrapcharges |
+----------+------------------+------------------+
| 000001 | 6 | 1.25 |
| 000002 | 8 | 2 |
| 000003 | 12 | 0 |
+----------+------------------+------------------+
9 rows in set
--
create procedure prccharges(in orderno char(6),
out shippingCharges float(4,2),out wrapCharges float(4,2))
begin
select mshippingcharges into shippingCharges from
orders where corderno = orderno;
select mgiftwrapcharges into wrapcharges from orders where corderno = orderno;
end;
--执行时命令
call prccharges('000001',@pp,@qq);
select @pp,@qq;
--执行结果
mysql> select @pp,@qq;
+-----+------+
| @pp | @qq |
+-----+------+
| 6 | 1.25 |
+-----+------+
1 row in set
create procedure prcHandLingCharges(in orderno char(6),
out handlingCharges float(4,2))
begin
declare ppp float(4,2);
declare qqq float(4,2);
call prccharges(orderno,ppp,qqq);
set handlingCharges = ppp + qqq;
end;
--执行时命令
call prcHandLingCharges('000001',@qqqq);
select @qqqq;
--执行结果
mysql> select @qqqq;
+-------+
| @qqqq |
+-------+
| 7.25 |
+-------+
1 row in set
例二:
01 | mysql> |
02 | mysql> delimiter $$ |
03 | mysql> |
04 | mysql> CREATE
PROCEDURE myProc()
|
05 | -> MODIFIES SQL DATA
|
06 | ->
BEGIN |
07 | ->
DECLARE l_status
VARCHAR(20); |
08 | ->
|
09 | -> CALL myProc1(l_status);
|
10 | -> IF l_status='Duplicate Entry'
THEN |
11 | ->
SELECT CONCAT('Warning: using existing definition for location ')
AS warning;
|
12 | ->
END IF; |
13 | ->
END$$ |
14 | Query OK, 0 rows
affected (0.00 sec) |
15 | |
16 | mysql> |
17 | mysql> CREATE
PROCEDURE myProc1(OUT
out_status VARCHAR(30))
|
18 | ->
BEGIN |
19 | ->
set out_status =
'Duplicate Entry';
|
20 | ->
END$$ |
21 | Query OK, 0 rows
affected (0.00 sec) |
22 | |
23 | mysql> |
24 | mysql> |
25 | mysql> delimiter ; |
26 | mysql> call myProc(); |
27 | +--------------------------------------------------+
|
28 | | warning |
|
29 | +--------------------------------------------------+
|
30 | | Warning: using existing definition
for location | |
31 | +--------------------------------------------------+
|
32 | 1 row in
set (0.00 sec) |
33 | |
34 | Query OK, 0 rows
affected (0.01 sec) |
35 | |
36 | mysql> drop
procedure myProc;
|
37 | Query OK, 0 rows
affected (0.00 sec) |
38 | |
39 | mysql> drop
procedure myProc1;
|
40 | Query OK, 0 rows
affected (0.00 sec) |
41 | |
42 | mysql> |
43 | mysql> |
本文详细介绍了如何使用SQL查询和存储过程来获取特定订单的运费和包装费用,并通过调用存储过程计算处理费用。

231

被折叠的 条评论
为什么被折叠?



