存储过程及java调用
来源:互联网 发布:mac无法安装flash 编辑:程序博客网 时间:2024/05/22 12:33
过程和触发器概述
过程和触发器在数据库中存储过程 SQL 语句,以供所有应用程序使用。它们包括允许 SQL 语句的重复执行(LOOP 语句)和条件执行(IF 语句和 CASE 语句)的控制语句。
过程是通过 CALL 语句调用的,并且使用参数来接受值和将值返回到调用环境中。通过将过程名包括在 FROM 子句中,SELECT 语句也可以对过程结果集进行操作。
过程可以将结果集返回给调用者、调用其它过程或触发触发器。例如,用户定义的函数是一种将单个值返回到调用环境的存储过程。用户定义的函数不修改传递给它们的参数,而是拓展可用于查询和其它 SQL 语句的函数的范围。
触发器与特定数据库表相关联。只要有人插入、更新或删除关联表的行,触发器就会自动触发。触发器可以调用过程和触发其它触发器,但它们不具有任何参数并且无法由 CALL 语句调用
示例
以下简单示例创建过程 new_dept,该过程执行 INSERT 到示例数据库的 department 表的操作,从而创建新的部门。
CREATE PROCEDURE new_dept ( IN id INT, IN name CHAR(35), IN head_id INT )BEGIN INSERT INTO DBA.department ( dept_id, dept_name, dept_head_id ) VALUES ( id, name, head_id );END
过程的主体是复合语句。复合语句以 BEGIN 语句起始,以 END 语句结束。在 new_dept 的例子中,复合语句是包括在 BEGIN 和 END 语句之间的单个 INSERT。
过程的参数可以标记为 IN、OUT 或 INOUT 之一。缺省情况下,参数是 INOUT 参数。new_dept 过程的所有参数都是 IN 参数,因为该过程并不更改它们。
调用过程
CALL 语句调用过程。过程可由应用程序调用,或者由其它过程和触发器调用。
有关详细信息,请参见 CALL 语句。
以下语句调用 new_dept 过程来插入 Eastern Sales 部门:
CALL new_dept( 210, 'Eastern Sales', 902 );在此调用后,您最好检查 department 表,以查看是否已添加该新部门。
已被授予该过程的 EXECUTE 权限的所有用户都可以调用 new_dept 过程,即使他们对 department 表不具有任何权限。
有关 EXECUTE 权限的详细信息,请参见 EXECUTE 语句[ESQL]。
调用返回结果集的过程的另一种方法是在查询中调用它。您可以对过程的结果集执行查询,并应用 WHERE 子句和其它 SELECT 功能以限制结果集。
SELECT t.id, t.quantity_ordered AS qFROM sp_customer_products( 149 ) t有关详细信息,请参见 FROM 子句。
示例
以下语句从数据库中删除过程 new_dept:
DROP PROCEDURE new_dept
try{
int age = 39;
String poetName = "dylan thomas";
CallableStatement proc = connection.prepareCall("{ call set_death_age(?, ?) }");
proc.setString(1, poetName);
proc.setInt(2, age);
cs.execute();
}catch (SQLException e){ // ....}
- 存储过程及java调用
- mysql存储过程学习及java调用存储过程
- mysql存储过程学习及java调用存储过程
- mysql存储过程学习及java调用存储过程
- mysql存储过程及java调用存储过程
- mysql存储过程学习及java调用存储过程
- MySQL存储过程及java中存储过程的调用
- mysql存储过程学习及java调用存储过程
- JAVA 调用Oracle 及存储过程
- oracle存储过程及Java调用
- 存储过程的学习及java调用
- Java中调用Oracle存储过程及存储函数
- Java调用存储过程
- Java 调用存储过程
- Java 调用存储过程
- JAVA调用存储过程
- java调用存储过程
- java调用存储过程
- 网页制作常用代码(文字颜色/字体/插入图片/flash等
- 最简单的邮箱地址的链接
- 20071125星期天,心源茶楼庆春店早上10点
- C#向Sql Server中插入记录时单引号的处理 选择自 davidullua 的 Blog
- NTLM认证模块分发使用协议
- 存储过程及java调用
- unix/linux ipc 进程通讯
- oracle 存储过程的基本语法
- Axis部署和开发web service支持的三种方式
- JavaScript 对象与数组参考大全
- unix常用命令
- WCF学习进阶篇
- 深入分析 Linux 内核链表
- oracle oci 例子