存储过程 自我学习

来源:互联网 发布:led显示屏输入软件 编辑:程序博客网 时间:2024/06/07 15:27

存储过程

IN,OUT,INOUT三种参数
IN:指定入参,不可返回,
OUT:指定出参,不可返回
INOUT,:调用时被指定,可修改,可返回

无参,无返回值  存储过程CREATE PROCEDURE name()BEGIN    SELECT * FROM TABLE;END
有入参存储过程CREATE PROCEDURE  name(IN _username VARCHAR(30),IN _AGE INT)BEGIN    SELECT * FROM TABLE WHERE USERNAME = _username AND AGE = _age;END
有入参,有出参 存储过程CREATE PROCEDURE name(IN _age INT, OUT _username VARCHAR(30))BEGIN    SET _username = (SELECT USERNAME FROM TABLE WHERE AGE = _age);    SELECT _username;END

数据库中执行:
可通过@定义入参.
无参 存储过程 的执行:
call name();
有入参 存储过程的执行:
call name(‘张三’,20);
或者
set @username = ‘张三’; –注意定义类型
set @age = 20;
call name(@username.@age);
有出参 存储过程的执行:
set @age = 20;
set @username = ”;–定义出参类型,赋值随意.此条可写可不写
call (@age,@username);
select @username;

@定义的参数,只有在BENGIN和END之间有效

JAVA代码中执行
无参存储过程:
String sql = “call name()”;
其他和普通sql执行一样.
有入参存储过程:
String sql = “call name(?,?)”;
其他和普通sql执行一样.
有出入参存储过程:
String sql = “call name(?,?)”;
为占位符赋值时,出参的赋值在最后.
PS:

CallableStatement call = conn.prepareCall(sql);call.setInt(1,20);//正常赋值call.setString(2,Type.String);//指定出参类型call.execute();String returnmsg = call.getString(2);//指定位置,此为返回的username

删除存储过程
DROP PROCEDURE ID EXISTS name;
//如果此存储过程存在,删除.

0 0
原创粉丝点击