标签:register targe rar 技术 bsp turn 行记录 type 数据库表
一、MySQL 创建存储过程
“pr_add” 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 “a”、“b”,返回这两个参数的和。
3、变量
使用DECLARE来声明,DEFAULT赋默认值,SET赋值
4、参数
IN为默认类型,值必须在调用时指定,值不能返回(值传递)
OUT值可以返回(指针传递)
INOUT值必须在调用时指定,值可以返回
eg:
5、条件判断
eg:
6、循环
LOOP、END LOOP
eg:
WHILE DO、END WHILE
REPEAT、UNTILL
7,异常处理
如果用cursor获取SELECT语句返回的所有结果集时应该定义NOT FOUND error handler来防止存储程序提前终结
如果SQL语句可能返回constraint violation等错误时应该创建一个handler来防止程序终结
8,数据库交互
INTO用于存储单行记录的查询结果
CURSOR用于处理多行记录的查询结果
unbounded SELECT语句用于存储过程返回结果集
UPDATE、INSERT、DELETE、CREATE TABLE等非查询语句也可以嵌入存储过程里
9,使用CALL调用存储程序
10,一个复杂的例子
11,存储方法
存储方法与存储过程的区别
1,存储方法的参数列表只允许IN类型的参数,而且没必要也不允许指定IN关键字
2,存储方法返回一个单一的值,值的类型在存储方法的头部定义
3,存储方法可以在SQL语句内部调用
4,存储方法不能返回结果集
语法:
各参数说明见CREATE PROCEDURE and CREATE FUNCTION Syntax
例子:
12,触发器
触发器在INSERT、UPDATE或DELETE等DML语句修改数据库表时触发
触发器的典型应用场景是重要的业务逻辑、提高性能、监控表的修改等
触发器可以在DML语句执行前或后触发
package com.test; import java.sql.*; public class Test { public static void main(String[] args) throws Exception { String div="com.mysql.jdbc.Driver"; String url="jdbc:mysql://127.0.0.1:3306/mydb?characterEncoding=GBK"; String uid="root"; String pwd=""; Class.forName(div); Connection conn = DriverManager.getConnection(url,uid,pwd); CallableStatement stat = conn.prepareCall("call BBB(?,?)"); stat.setString(1, "k001"); stat.registerOutParameter(2, java.sql.Types.INTEGER); ResultSet rs = stat.executeQuery(); int i =stat.getInt(2); System.out.println(i); while(rs.next()){ System.out.println(rs.getString(2)); } conn.close(); } }
结果为:
标签:register targe rar 技术 bsp turn 行记录 type 数据库表
原文地址:http://www.cnblogs.com/claricre/p/6262168.html