oracle 包,函数,过程,块的创建和执行及在java中执行(转)
SQL> create or replace procedure sp_guocheng1 is--如果有这个名字就替换
2 begin--执行部分
3 insert into guocheng values('liyifeng','liyifeng');
4 end;
5 / --执行的意思
Procedure created
显示错误
SQL> show error;
Errors for PROCEDURE LIYIFENG.SP_GUOCHENG1:
LINE/COL ERROR
-------- -----------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------
3/22 PL/SQL: ORA-00928: 缺失 SELECT 关键字
3/1 PL/SQL: SQL Statement ignored
6/0 PLS-00103: 出现符号 "end-of-file"在需要下列之一时: ( begin case declare end exception exit for goto if loop mod null pragma raise return select update while
with <an identifier> <a double-quoted delimited-identifier> <a bind variable> << continue close current delete fetch lock insert open rollback savepoint set sql
execute commit forall merge pipe purge
执行过程
SQL> exec sp_guocheng1;
PL/SQL procedure successfully completed
SQL> commit;
一个新的快
SQL> set serveroutput on;--打开输出选项
SQL>
SQL> begin
2 dbms_output.put_line('hello,world');--dbms_output是包.put_line是过程
3 end;
4 /
hello,world
PL/SQL procedure successfully completed
带有变量的查询
SQL> declare
2 v_ename varchar2(25);
3 v_id number;
4 begin
5 select name,id into v_ename,v_id from stu where name=&aa;
6 dbms_output.put_line('用户名是:'||v_ename||v_id );
7 end;
8 /
用户名是:liyifeng 0
PL/SQL procedure successfully completed
带有类外的查询
SQL> declare
2 v_ename varchar2(25);
3 v_id number;
4 begin
5 select name,id into v_ename,v_id from stu where name=&aa;
6 dbms_output.put_line('用户名是:'||v_ename||v_id );
7 exception
8 when no_data_found then
9 dbms_output.put_line('您输入的数据不存在!');
10 end;
11 /
您输入的数据不存在!
PL/SQL procedure successfully completed
--传入参数的过程 注意,定义参数的时候不能带上长度。
create procedure sp_gc1(v_id number,v_name varchar2) is
begin
update stu set name=v_name where id=v_id;
end;
过程在java中运行。。注意jdbc_oracle架包。。
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class testExec {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection ct=null;
try{
//加载驱动
// Class.forName("com.hxtt.sql.access.AccessDriver");//连接access的
Class.forName("oracle.jdbc.driver.OracleDriver");
//创建连接
ct=DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.9:1521:orcl","liyifeng","liyifeng");
//创建 callablestatement
CallableStatement cs=ct.prepareCall("{call sp_gc1(?,?)}");
//给?复制
cs.setInt(1, 0);
cs.setString(2, "mountLee");
//设置不自动提交事务
ct.setAutoCommit(false);
cs.execute();
//提交事务
ct.commit();
//关闭资源
cs.close();
ct.close();
}
catch (Exception e){
try {
//如果失败,就回滚
ct.rollback();
}
catch(Exception ex){ex.printStackTrace();}
e.printStackTrace();
}
}
}
--传入参数并有返回值的函数
create or replace function sp_guoc(v_id number)
return varchar2 is v_name varchar2(20);
begin
select name into v_name from stu where id=v_id;
return v_name;
end;
java中调用函数
Statement sm=ct.createStatement();
ResultSet rs=sm.executeQuery("select sp_guoc(0) from stu");
if(rs.next()){
System.out.print(rs.getString(1));}
--创建包
create or replace package sp_pack is
procedure sp_pd (v_id number,v_name varchar2);
function sp_ft (v_id number) return number;
end;
--创建包体
create or replace package body sp_pack is
procedure sp_pd(v_id number,v_name varchar2) is
begin
update stu set name=v_name where id=v_id;
end;
function sp_ft(v_id number)
return number is v_name number;
begin
select id into v_name from stu where id=v_id;
return v_name;
end;
end;
执行包中的过程
SQL> exec sp_pack.sp_pd(0,'lee');
PL/SQL procedure successfully completed
SQL> commit;
Commit complete
java中执行包中函数的方法。
Statement sm=ct.createStatement();
ResultSet rs=sm.executeQuery("select sp_pack.sp_ft(0) from stu");
if(rs.next()){
System.out.print(rs.getString(1));}
http://blog.163.com/mount_lee/blog/static/20202509520122292827986/
oracle 包,函数,过程,块的创建和执行及在java中执行(转)的更多相关文章
- Java中执行存储过程和函数(web基础学习笔记十四)
一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. CallableStatement 接口继承自PreparedStatement 接口.所以CallableS ...
- Java中执行存储过程和函数
装载于:http://www.cnblogs.com/liunanjava/p/4261242.html 一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. Ca ...
- 第32节:Java中-构造函数,静态方法,继承,封装,多态,包
构造函数实例 class Cat{ // 设置私有的属性 name private String name; // 设置name的方法 public void setName(String Name) ...
- java中Map的put函数和get函数用法
---内容开始--- 没有比较完整的说明他们的用法,一般就只能看源函数,但是看起来比较的费劲. 那么究竟put函数和get函数的用法是如何的呢? 当然java中的Map集合是有Key和Value的. ...
- oracle PL/SQL(procedure language/SQL)程序设计之函数+过程+包
匿名PL/SQL块回顾 DECLARE (可选) 定义在PL/SQL块中要使用的对象BEGIN (必须) 执行语句EXCEPTION (可选) 错误处理语句END; (必须)匿名块( ...
- oracle PL/SQL(procedure language/SQL)程序设计之函数+过程+包(转)
匿名PL/SQL块回顾 DECLARE (可选) 定义在PL/SQL块中要使用的对象 BEGIN (必须) 执行语句 EXCEPTION (可选) 错误处理语句 END; (必 ...
- [转载]以及部分总结--Linux下创建单机ASM存储的Oracle实例的过程---感谢方总
Linux下单机安装ASM流程总结 一.安装Linux ESXi上传iso镜像至存储目录 创建虚拟机,并且选择主机设备的ISO启动 选择完成时编辑虚拟机设置 配置镜像文件如下: 打开控制台: 并且选择 ...
- Oracle 子程序、过程、函数
一.子程序 子程序是一个数据库对象,存在于数据库中,里面存放的是PL/SQL代码,可以完成一定的共能,能被程序和客户端工具直接调用.子程序类似于java中的方法,可以接接收参数,按照是否有返回值,子程 ...
- Oracle中函数/过程返回结果集的几种方式
原文 Oracle中函数/过程返回结果集的几种方式 Oracle中函数/过程返回结果集的几种方式: 以函数return为例,存储过程只需改为out参数即可,在oracle 10g测试通过. ...
随机推荐
- Swift - 控制流/控制结构说明(if,switch,for,while)
1,if语句 1 2 3 4 5 if count >=3 { println("yes") }else{ println("no") } ...
- 地大邀请赛d
Problem D: Tetrahedron Inequality Time Limit: 1 Sec Memory Limit: 128 MB Submit: 15 Solved: 3 [ ...
- MySQL 关闭FOREIGN_KEY_CHECKS检查
SET FOREIGN_KEY_CHECKS=0; truncate table QRTZ_BLOB_TRIGGERS; truncate table QRTZ_CALENDARS; truncate ...
- Android性能优化---布局优化
我们从事Android开发编写布局的时候大多数是使用XML来布局,这给我们带来了方便性,这样操作可以布局界面的代码和逻辑控制的Java代码分离出来,使程序的结构更加清晰.明了.特别的复杂的布局,但是这 ...
- timesten升级
ttIsql "DSN=ttwind;UID=cacheuser;PWD=cacheuser;OraclePWD=cacheuser;" --1.查看当前版本号 Command&g ...
- 用C语言写解释器(一)——我们的目标
声明 为提高教学质量,我所在的学院正在筹划编写C语言教材.<用C语言写解释器>系列文章经整理后将收入书中"综合实验"一章.因此该系列的文章主要阅读对象定为刚学完C语言的 ...
- 使用EXCEL设置“下拉菜单”选项功能
原创作品.出自 "深蓝的blog" 博客.欢迎转载.转载时请务必注明出处,否则有权追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlo ...
- Fashion Meets Finance聚会来袭-7月19日 北京
http://mp.weixin.qq.com/mp/appmsg/show?__biz=MjM5NjEzMjMyMQ%3D%3D&appmsgid=10000704&itemidx= ...
- POJ2155:Matrix(二维树状数组,经典)
Description Given an N*N matrix A, whose elements are either 0 or 1. A[i, j] means the number in the ...
- gem5 设定checkpiont以及从checkpoint开始运行
同spec2006中间bzip2一个例子,如何设置checkpoint .以及从checkpoint继续以启动运行.这样做的目的是为了,采纳automic运行N指令,然后detailed运行M指令. ...