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中执行(转)的更多相关文章

  1. Java中执行存储过程和函数(web基础学习笔记十四)

    一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. CallableStatement 接口继承自PreparedStatement 接口.所以CallableS ...

  2. Java中执行存储过程和函数

    装载于:http://www.cnblogs.com/liunanjava/p/4261242.html 一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. Ca ...

  3. 第32节:Java中-构造函数,静态方法,继承,封装,多态,包

    构造函数实例 class Cat{ // 设置私有的属性 name private String name; // 设置name的方法 public void setName(String Name) ...

  4. java中Map的put函数和get函数用法

    ---内容开始--- 没有比较完整的说明他们的用法,一般就只能看源函数,但是看起来比较的费劲. 那么究竟put函数和get函数的用法是如何的呢? 当然java中的Map集合是有Key和Value的. ...

  5. oracle PL/SQL(procedure language/SQL)程序设计之函数+过程+包

    匿名PL/SQL块回顾 DECLARE (可选)    定义在PL/SQL块中要使用的对象BEGIN (必须)    执行语句EXCEPTION (可选)    错误处理语句END; (必须)匿名块( ...

  6. oracle PL/SQL(procedure language/SQL)程序设计之函数+过程+包(转)

    匿名PL/SQL块回顾 DECLARE (可选)     定义在PL/SQL块中要使用的对象 BEGIN (必须)     执行语句 EXCEPTION (可选)     错误处理语句 END; (必 ...

  7. [转载]以及部分总结--Linux下创建单机ASM存储的Oracle实例的过程---感谢方总

    Linux下单机安装ASM流程总结 一.安装Linux ESXi上传iso镜像至存储目录 创建虚拟机,并且选择主机设备的ISO启动 选择完成时编辑虚拟机设置 配置镜像文件如下: 打开控制台: 并且选择 ...

  8. Oracle 子程序、过程、函数

    一.子程序 子程序是一个数据库对象,存在于数据库中,里面存放的是PL/SQL代码,可以完成一定的共能,能被程序和客户端工具直接调用.子程序类似于java中的方法,可以接接收参数,按照是否有返回值,子程 ...

  9. Oracle中函数/过程返回结果集的几种方式

    原文 Oracle中函数/过程返回结果集的几种方式 Oracle中函数/过程返回结果集的几种方式:    以函数return为例,存储过程只需改为out参数即可,在oracle 10g测试通过.    ...

随机推荐

  1. LeetCode——Count and Say

    The count-and-say sequence is the sequence of integers beginning as follows: 1, 11, 21, 1211, 111221 ...

  2. VS2012配置astyle格式化代码

    1.工具->扩展和更新,搜astyle插件,下载安装重启,当前是2.0版本. 2.工具->选项->AStyle Formatter->Edit,填入下面的,点击save,确定. ...

  3. javascript (六) 引用外部js文件

    外部的 JavaScript 也可以把脚本保存到外部文件中.外部文件通常包含被多个网页使用的代码. 外部 JavaScript 文件的文件扩展名是 .js. 如需使用外部文件,请在 <scrip ...

  4. 多字符集(ANSI)和UNICODE及字符串处理方式准则

    在我们编写程序的时候,使用最多的是字符串的处理,而ANSI和UNICODE的相互转换经常搞的我们头晕眼乱. 应该说UNICODE是一种比较好的编码方式,在我们的程序中应该尽量使用UNICODE编码方式 ...

  5. C++ Primer 学习笔记_32_STL实践与分析(6) --再谈string类型(下)

    STL实践与分析 --再谈string类型(下) 四.string类型的查找操作 string类型提供了6种查找函数,每种函数以不同形式的find命名.这些操作所有返回string::size_typ ...

  6. ThinkPHP连接数据库出现的错误:Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'

    最近看了看ThinkPHP.在连接mysql数据库时出现了错误:Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'.意思就是没有PDO(PHP数据对象 ...

  7. POJ2112_Optimal Milking(网洛流最大流Dinic+最短路Flody+二分)

    解题报告 农场有k个挤奶机和c头牛,每头牛到每一台挤奶机距离不一样,每台挤奶机每天最多挤m头牛的奶. 寻找一个方案,安排每头牛到某一挤奶机挤奶,使得c头牛须要走的全部路程中的最大路程的最小值. 要使每 ...

  8. ExtJS学习-----------Ext.Array,ExtJS对javascript中的Array的扩展

    关于ExtJS对javascript中的Array的扩展.能够參考其帮助文档,文档下载地址:http://download.csdn.net/detail/z1137730824/7748893 因为 ...

  9. UVA 11080 - Place the Guards(二分图判定)

    UVA 11080 - Place the Guards 题目链接 题意:一些城市.之间有道路相连,如今要安放警卫,警卫能看守到当前点周围的边,一条边仅仅能有一个警卫看守,问是否有方案,假设有最少放几 ...

  10. Visual Studio Installer打包后生成的安装文件每次执行都需要重新安装C++ 2010运行库(x86)的解决方案

    原文:Visual Studio Installer打包后生成的安装文件每次执行都需要重新安装C++ 2010运行库(x86)的解决方案 如果你是用Visual Studio自带的打包项目打包了一个I ...