Oracle中的存储过程



pl/sql编程语言是Oracle中操作数据库最快的语言,而存储过程本质就是pl/sql,所以通过存储过程来对数据库进行CRUD是最有效的。

不再使用JDBC来进行CRUD操作,因为使用JDBC来进行CRUD操作效率低。

所以,Java通过调用存储过程,来间接调用pl/sql,达到对数据库的CRUD操作。

我们可以把CRUD操作封装到存储过程中,在程序中,调用存储过程即可。

以下是例子:来自于Oracle讲师赵强

--打印Hello World
/*
调用存储过程
1. exec sayHelloWorld();
2. begin
      sayHelloWorld();
      sayHelloWorld();
      sayHelloWorld();
   end;
   /
*/
create or replace procedure sayHelloWorld
as
   --说明部分
begin

    dbms_output.put_line('Hello World');
end;
/

带参数的存储过程

--给指定的员工涨100,并且打印涨前和涨后的薪水

create or replace procedure raiseSalary(eno in number)
as
  --定义变量保存涨前的薪水
  psal emp.sal%type;
begin
  --得到涨前的薪水
  select sal into psal from emp where empno=eno;
  --涨100
  update emp set sal=sal+100 where empno=eno;

  --要不要commit??

  --打印
  dbms_output.put_line('涨前:'||psal||'   涨后:'||(psal+100));

end;
/

存储函数:和存储过程的区别在于有一个返回值

--查询某个员工的年收入
create or replace function queryEmpIncome(eno in number)
return number
as
     --定义变量保存月薪和奖金
     psal emp.sal%type;
     pcomm emp.comm%type;
begin
     select sal,comm into psal,pcomm from emp where empno=eno;
     --返回年收入
     return psal*12+nvl(pcomm,0);
end;
/

declare
	income number;
begin

	income:=queryEmpIncome(7369);
	dbms_output.put_line(income);
end;
/

Oracle中的存储过程,布布扣,bubuko.com

时间: 05-30

Oracle中的存储过程的相关文章

用sql语句导出oracle中的存储过程和函数

用sql语句导出oracle中的存储过程和函数: SET echo off ; SET heading off ; SET feedback off ; SPOOL 'C:/PRC.SQL' replace SELECT CASE WHEN LINE = 1 THEN 'CREATE OR REPLACE ' || TEXT WHEN LINE = MAX_LINE THEN TEXT || CHR(10 ) || '/' ELSE TEXT END FROM USER_SOURCE A LEF

Oracle中的存储过程简单例子

---创建表 create table TESTTABLE ( id1  VARCHAR2(12), name VARCHAR2(32) ) select t.id1,t.name from TESTTABLE t insert into TESTTABLE (ID1, NAME) values ('1', 'zhangsan'); insert into TESTTABLE (ID1, NAME) values ('2', 'lisi'); insert into TESTTABLE (ID1

oracle中写存储过程2

存储过程中调用存储过程 create or replace package body PF_Role_Pack is procedure sp_GetPage_Role(pageSize_ in number, --每页大小 pageIndex_ in number, --数据页数,从1开始 RoleNname_ nvarchar2, IsSys_ char, IsUsed_ char, numCount_ out number, --总记录数 MYRECORD_ out MYRECORDTYP

Mybatis调用Oracle中的存储过程和function

一.Mybatis调用存储过程 1 在数据库中创建以下的存储过程create or replace procedure pro_hello(p_user_name in varchar2,p_result out varchar2) isbegin  p_result := 'hello,' || p_user_name;end; 2 编写SQL映射文件mapper.xmlstatementType里的CALLABLE是标注此sql为存储过程.parameterType是标注要传的参数,看了一些

oracle中PLSQL存储过程中如何使用逗号分隔的集合(逗号分隔字符串转换为一个集合)

原文: https://blogs.oracle.com/aramamoo/entry/how_to_split_comma_separated_string_and_pass_to_in_clause_of_select_statement 'SMITH,ALLEN,WARD,JONES'  为4个值的集合,在存储过程中需要怎么处理才能实现 in (值1,值2,值3,值4 ) 的效果: 下面的方法值得借鉴:下面的方式将一个逗号表达式变成一列的4行的集合来实现. select regexp_su

Java 调用Oracle中的存储过程

--建表 SQL> create table TBook(bookId number(8),bookName varchar2(50),publishHouse varchar2(50)); --编写过程 --in:输入参数:out:输出参数 SQL> create or replace procedure sp_pro7(spBookId in number,spName in Varchar2,spPublishHost in varchar2) is begin insert into

Oracle中执行存储过程call和exec区别

在sqlplus中这两种方法都可以使用:exec pro_name(参数1..);call pro_name(参数1..); 区别: 1. 但是exec是sqlplus命令,只能在sqlplus中使用:call为SQL命令,没有限制.2. 存储过程没有参数时,exec可以直接跟过程名(可以省略()),但call则必须带上(). Sql代码SQL> --创建过程插入数据SQL> create or replace procedure pro1 is2 begin --执行部分3 insert i

Oracle中的存储过程(Stored Procedure)

一.存储过程的定义 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程是数据库中的一个重要对象. 二.基本语法 创建存储过程 create procedure sp_name @[参数名] [类型],@[参数名] [类型] as begin ......... end 以上格式还可以简写成: create p

java调用Oracle中的存储过程与存储函数

1 //调用存储过程 2 public static void testPro(){ 3 String driver = "oracle.jdbc.OracleDriver"; 4 String url = "jdbc:oracle:thin:@localhost:1521:orcl"; 5 Connection conn = null; 6 CallableStatement cs = null; 7 8 try { 9 Class.forName(driver)