在MySQL中创建带有IN和OUT参数的存储过程的方法
2个回答
展开全部
在
MySQL
中创建储存过程的语法很难记,除非你经常跟储存过程打交道,原因很简单,语法不是什么小笑话。如果你通过命令行控制
MySQL,你需要记住准确的语法。一个快速示例可以很好的帮助你做到这点。在MySQL
入门教程中,我们能够看到很多关于如何创建储存过程
和如何利用
IN
和
OUT
参数调用存储过程的示例。这些示例都很简单,能够很好的帮助你理解
MySQL
中创建带参数存储过程的语法。这些示例已在
MySQL
5.5
中通过测试。我们将用下面的雇员表创建并测试这些储存过程:
mysql>
select
*
from
employee;
+--------+----------+---------+--------+
|
emp_id
|
emp_name
|
dept_id
|
salary
|
+--------+----------+---------+--------+
|
103
|
Jack
|
1
|
1400
|
|
104
|
John
|
2
|
1450
|
|
108
|
Alan
|
3
|
1150
|
|
107
|
Ram
|
NULL
|
600
|
+--------+----------+---------+--------+
4
rows
in
set
(0.22
sec)
创建和使用带In参数的MySQL存储过程
下面是一个命令行方式创建MySQL存过的例子,我们根据
department从employee表中获取一个总数,dept_id是department表的
外键。
mysql>
DELIMITER
//
mysql>
create
procedure
usp_totalEmployeeByDeparment(IN
id
INT)
->
begin
->
select
count(*)
as
total
from
employee
where
dept_id
=
id;
->
end//
Query
OK,
0
rows
affected
(0.00
sec)
mysql>
DELIMITER
;
首先我们改变默认的分隔符为“//”来作为存储过程结束的标识,随后再恢复默认值。使用“usp”前缀是区分系统存过过程和用户自定义存储过程的最佳实践。现在你可以在MySQL命令行像这样来调用存过:
mysql>
call
usp_totalEmployeeByDeparment(2);
+-------+
|
total
|
+-------+
|
1
|
+-------+
1
row
in
set
(0.06
sec)
创建和使用带IN和OUT参数的存储过程
在这个MySQL例子中,我们创建了一个IN和一个OUT参数的存储过程
usp_GetEmployeeName。当调用这个存储过程时,你需要传递2个参数:id和name,一个作为输入参数id,另外一个作为输出参数返回结果。
mysql>
DELIMITER
//
mysql>
create
procedure
usp_GetEmployeeName(IN
id
INT,
OUT
name
VARCHAR(20))
->
begin
->
select
emp_name
into
name
from
employee
where
emp_id
=
id;
->
end//
Query
OK,
0
rows
affected
(0.52
sec)
mysql>
DELIMITER
;
mysql>
call
usp_GetEmployeeName(103,
@name);
Query
OK,
1
row
affected
(0.05
sec)
以MySQL命令行方式调用存过:
mysql>
select
@name;
+-------+
|
@name
|
+-------+
|
Jack
|
+-------+
1
row
in
set
(0.00
sec)
这就是怎样从命令行方式创建和调用存储过程的所有内容,在这个教程中,我们创建了带IN和OUT参数的存储过程多个例子。这是记住MySQL数据库存过语法的最好方式。
MySQL
中创建储存过程的语法很难记,除非你经常跟储存过程打交道,原因很简单,语法不是什么小笑话。如果你通过命令行控制
MySQL,你需要记住准确的语法。一个快速示例可以很好的帮助你做到这点。在MySQL
入门教程中,我们能够看到很多关于如何创建储存过程
和如何利用
IN
和
OUT
参数调用存储过程的示例。这些示例都很简单,能够很好的帮助你理解
MySQL
中创建带参数存储过程的语法。这些示例已在
MySQL
5.5
中通过测试。我们将用下面的雇员表创建并测试这些储存过程:
mysql>
select
*
from
employee;
+--------+----------+---------+--------+
|
emp_id
|
emp_name
|
dept_id
|
salary
|
+--------+----------+---------+--------+
|
103
|
Jack
|
1
|
1400
|
|
104
|
John
|
2
|
1450
|
|
108
|
Alan
|
3
|
1150
|
|
107
|
Ram
|
NULL
|
600
|
+--------+----------+---------+--------+
4
rows
in
set
(0.22
sec)
创建和使用带In参数的MySQL存储过程
下面是一个命令行方式创建MySQL存过的例子,我们根据
department从employee表中获取一个总数,dept_id是department表的
外键。
mysql>
DELIMITER
//
mysql>
create
procedure
usp_totalEmployeeByDeparment(IN
id
INT)
->
begin
->
select
count(*)
as
total
from
employee
where
dept_id
=
id;
->
end//
Query
OK,
0
rows
affected
(0.00
sec)
mysql>
DELIMITER
;
首先我们改变默认的分隔符为“//”来作为存储过程结束的标识,随后再恢复默认值。使用“usp”前缀是区分系统存过过程和用户自定义存储过程的最佳实践。现在你可以在MySQL命令行像这样来调用存过:
mysql>
call
usp_totalEmployeeByDeparment(2);
+-------+
|
total
|
+-------+
|
1
|
+-------+
1
row
in
set
(0.06
sec)
创建和使用带IN和OUT参数的存储过程
在这个MySQL例子中,我们创建了一个IN和一个OUT参数的存储过程
usp_GetEmployeeName。当调用这个存储过程时,你需要传递2个参数:id和name,一个作为输入参数id,另外一个作为输出参数返回结果。
mysql>
DELIMITER
//
mysql>
create
procedure
usp_GetEmployeeName(IN
id
INT,
OUT
name
VARCHAR(20))
->
begin
->
select
emp_name
into
name
from
employee
where
emp_id
=
id;
->
end//
Query
OK,
0
rows
affected
(0.52
sec)
mysql>
DELIMITER
;
mysql>
call
usp_GetEmployeeName(103,
@name);
Query
OK,
1
row
affected
(0.05
sec)
以MySQL命令行方式调用存过:
mysql>
select
@name;
+-------+
|
@name
|
+-------+
|
Jack
|
+-------+
1
row
in
set
(0.00
sec)
这就是怎样从命令行方式创建和调用存储过程的所有内容,在这个教程中,我们创建了带IN和OUT参数的存储过程多个例子。这是记住MySQL数据库存过语法的最好方式。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询