十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
你创建一个存储过程C
祥云网站建设公司成都创新互联,祥云网站设计制作,有大型网站制作公司丰富经验。已为祥云上千家提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的祥云做网站的公司定做!
先执行存储过程A,并得到返回值
再判断返回值执行存储过程B
例如:
mysql
\d
//
mysql
create
procedure
test(v_name
char(20),out
v_id
int)
-
BEGIN
-
SELECT
id
into
v_id
from
t1
WHERE
name=v_name;
-
END;
-
//
mysql
create
procedure
test1(v_id
int,out
v_name
char(20))
-
BEGIN
-
SELECT
name
into
v_name
from
t2
where
id=v_id;
-
END;
-
//
mysql
create
procedure
test2(inout
v_name
char(20))
-
BEGIN
-
DECLARE
v_id
int;
-
CALL
test(v_name,v_id);
-
CALL
test1(v_id,v_name);
-
END;
-
//
mysql
set
@aa='xx‘//
Query
OK,
rows
affected
(0.00
sec)
mysql
call
test2(@aa)
//
Query
OK,
rows
affected
(0.01
sec)
mysql
select
@aa//
+------+
|
@aa
|
+------+
|
x2
|
+------+
1
row
in
set
(0.00
sec)
调用如:select 函数名(参数列表)。
mysql中的UDF(自定义函数),可以写好一些方法或 函数,然后进行调用,而且是在SQL语句中可以进行调用。
DROP FUNCTION CalculateAmount
CREATE FUNCTION CalculateAmount(userid INT) RETURNS float(10,2)
BEGIN
DECLARE totalCredits FLOAT;
SELECT SUM(amount) INTO totalAmount FROM credit_user WHERE id =userid;
RETURN totalAmount;
END
要注意的是,在UDF中,不要定义与数据表中重名的列。而在SQL中, 则可以像SELECT CalculateAmount(1);那样去调用了。
在我们日常生活中偶尔会遇到一些自己不知道如何解决的问题,比如使用安装好的mysql。那么我们应该怎样解决这种自己不知道如何使用安装好的mysql的情况呢?那么接下来就由我来介绍一下使用安装好的mysql的步骤吧。
本次操作以Dell电脑为例,具体操作步骤如下:
第一步:
首先,打开MySQLWorkbench,双击打开即可。打开后的界面如下所示,然后选择数据库实例,双击进行登录。图中数据库的实例是LocalinstanceMYSQL57
第二步:
然后,输入用户名和密码进行登录。如下图所示:
第三步:
登录成功后,界面如下所示。其中,区域1显示的是数据库服务器中已经创建的数据库列表。区域2是关于数据库的操作列表。区域三是sql的编辑器和执行环境,区域4是执行结果的列表
第四步:
在sql的编辑器中输入测试语句,如图所示,其中world数据库是mysql自带的测试数据库,然后选择执行(或者使用快捷键ctrl+enter)。执行成功后,查询结果会显示在下面的列表中。
第五步:
使用完毕后,直接退出,并且如果无需数据库的后继操作的话,记得关掉MySQL的服务
看了我的方法,现在你学会如何使用安装好的mysql了吗?学会了的话就快快把这个方法分享出去,让更多的人知道如何使用安装好的mysql。以上就是使用安装好的mysql的步骤。
本文章基于Dell品牌、Windows10系统撰写的。
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Types;
/*
* 对应的存储过程
DROP PROCEDURE IF EXISTS `pro_num_user`;
delimiter ;;
CREATE PROCEDURE `pro_num_user`(IN user_name varchar(10) ,OUT count_num INT)
READS SQL DATA
BEGIN
SELECT COUNT(*) INTO count_num FROM tab_user WHERE 'name'=user_name;
END
;;
delimiter ;
*/
public class Test {
public static final String DRIVER_CLASS = "com.mysql.jdbc.Driver";
public static final String URL = "jdbc:mysql://127.0.0.1:3306/test";
public static final String USERNAME = "root";
public static final String PASSWORD = "acbee";
public static void main(String[] args) throws Exception {
test1();
test2();
}
public static void test1() throws Exception
{
Class.forName(DRIVER_CLASS);
Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
String sql = "{CALL pro_num_user(?,?)}"; //调用存储过程
CallableStatement cstm = connection.prepareCall(sql); //实例化对象cstm
cstm.setString(1, "myd"); //存储过程输入参数
//cstm.setInt(2, 2); // 存储过程输入参数
cstm.registerOutParameter(2, Types.INTEGER); // 设置返回值类型 即返回值
cstm.execute(); // 执行存储过程
System.out.println(cstm.getInt(2));
cstm.close();
connection.close();
}
public static void test2() throws Exception
{
Class.forName(DRIVER_CLASS);
Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
String sql = "{CALL pro_number(?,?,?)}"; //调用存储过程
CallableStatement cstm = connection.prepareCall(sql); //实例化对象cstm
cstm.setInt(1, 2); // 存储过程输入参数
cstm.setInt(2, 2); // 存储过程输入参数
cstm.registerOutParameter(3, Types.INTEGER); // 设置返回值类型 即返回值
cstm.execute(); // 执行存储过程
System.out.println(cstm.getInt(3));
cstm.close();
connection.close();
}
}
创建存储过程
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,
rows
affected
(0.00
sec)
mysql
delimiter
;
--
恢复分号作为分隔终止符号
5.调用存储过程
mysql
set
@po_name=';
Query
OK,
rows
affected
(0.00
sec)
mysql
call
sp_test(1,@po_name);