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测试通过. ...
随机推荐
- 窗口显示于parent控件上(用到了ManualDock函数)
procedure TForm1.btn1Click(Sender: TObject); begin with TForm2.Create(self) do begin ManualDock(self ...
- SilkTest Q&A 5
Q41.VerifyBitmap的问题. 我正在使用函数VerifyBitmap比较位置,边,颜色等,例如: Window.VerifyBitmap("Position.bmp", ...
- cx_Oracle模块学习之绑定变量
有些时候我们需要和程序交互,此时需要绑定量下面两个例子简介在SELECT 和 DML 里面绑定变量的用法 SELECT 里面的绑定变量 [root@Ora10G py]# cat SelectBind ...
- Delphi Windows API判断文件共享锁定状态(使用OpenFile来判断)
一.概述 锁是操作系统为实现数据共享而提供的一种安全机制,它使得不同的应用程序,不同的计算机之间可以安全有效地共享和交换数据.要保证安全有效地操作共享数据,必须在相应的操作前判断锁的类型,然后才能确定 ...
- [Android学习笔记]LinearLayout布局,剩余空间的使用
转自:http://segmentfault.com/q/1010000000095725 如果使得一个View占用其父View的剩余空间? 答案是使用:android:layout_weight = ...
- [Android学习笔记]Canvas的使用
Canvas文档 http://developer.android.com/training/index.html 在绘制view时候,重写onDraw(canvas)方法,可能需要在canvas上绘 ...
- Urxvt - awesome
Urxvt - awesome Urxvt From awesome Jump to: navigation, search rxvt-unicode (urxvt for short) is a c ...
- LCS最大公共子序列问题
在生物应用中,经常需要比较两个(或多个)不同生物体的DNA, 例如:某种生物的DNA可能为S1=ACCGGTCGAGTGCGCGGAAGCCGGCCGAA, 另一种生物的DNA可能为S2=GTCGTT ...
- Android Fragment的介绍与使用(案例Demo)
应用场景: 众所了解Android上的界面展示都是通过Activity实现的,可是Activity也有它的局限性,相同的界面在手机上显示可能非常好看,在平板上就未必了.为了让界面能够在平板上更好地展示 ...
- PCI 总线学习笔记
转载请注明出处:http://blog.csdn.net/lg2lh/article/details/8042008 PCI的基本协议这里就不介绍了,由于一般的芯片协议都是集成好的,我仅仅须要大体了解 ...