oracle--存储过程--bai

--1 无入参最简单的存储过程

create or replace procedure hello_proc
 as
   v_name varchar2(20);
   v_age number;
 begin
   v_name:=‘bai‘;
   v_age:=18;

   dbms_output.put_line(‘你好‘||v_name||‘,你今年‘||v_age);
 end;

--在plsql中调用
begin
hello_proc;
end;

/* 在command窗下运行
set serverout on;
exec system.hello_proc;
*/

--练习1
create or replace procedure show_sum_proc
as
 v_i number:=‘1‘;
 v_sum number:=‘0‘;
begin
  loop
    v_sum:=v_sum+v_i;
    v_i:=v_i+1;
    exit when v_i=201;
  end loop;
   dbms_output.put_line(v_sum);
end;

--2 有入参的存储过程
create or replace procedure show_add_result
(
  i number default 10,   --默认值
  j number default 20
)
as
 v_result number;
begin
 v_result :=i+j;
 dbms_output.put_line(i||‘+‘||j||‘=‘||v_result);
end;

begin
  show_add_result(‘2‘);
end;

select * from scott.emp;
--经典例子
  显示指定工号的员工姓名和工资,如果没有,则输出该员工不存在

create or replace procedure show_emp_by_eno_proc
(
  v_eno scott.emp.empno%type:=‘7369‘
)
as
v_ename varchar(20);
v_sal number;
begin
  select ename,sal into v_ename,v_sal from scott.emp where empno=v_eno;

  dbms_output.put_line(v_eno||‘对应的员工名‘||v_ename||‘,工资‘||v_sal);
 exception
  when no_data_found then
  dbms_output.put_line(‘找不到‘||v_eno||‘对应的员工‘);
end;

create or replace procedure show_emp_by_eno_proc
as
begin
   dbms_output.put_line(‘测试重载‘);
end;

begin
   show_emp_by_eno_proc();
end;

--根据姓名查找员工
create or replace procedure show_emp_by_ename_proc
(
  v_ename varchar2
)
as
v_sal number;
begin
  select sal into v_sal from scott.emp where ename=v_ename;
  dbms_output.put_line(v_ename||‘对应的员工工资‘||v_sal);
 exception
  when no_data_found then
  dbms_output.put_line(‘找不到‘||v_ename||‘对应的员工‘);
  when too_many_rows then
  dbms_output.put_line(v_ename||‘对应的员工超过1个‘);
  when others then
    dbms_output.put_line(‘查找过程出现异常!‘);
end;

---
create or replace procedure show_dname_by_eno_depno
(
  v_depno scott.dept.deptno%type
)
as
v_dname varchar(20);
begin
  select dname into v_dname from scott.dept where deptno = v_depno;

  dbms_output.put_line(v_depno||‘对应的部门名‘||v_dname);
 exception
  when no_data_found then
  dbms_output.put_line(‘找不到‘||v_depno||‘对应的部门‘);
end;

--3 有入参,有出参的存储过程
输入i,j,用result出参获得相加的结果
create or replace procedure get_add_result_proc(
  i number,
  j number,
  result out number   --指定result为出参
)
as
begin
  result:=i+j;
end;

--使用plsql调用存储过程
declare
 result number;
begin
   get_add_result_proc(‘1‘,‘2‘,result);
   dbms_output.put_line(result);
end;

--创建存储过程,获得当前的日期和星期几
create or replace procedure get_date_and_day
(
   v_date out varchar2 ,
   v_day out varchar2
)
as
begin
  select to_char(sysdate,‘dd‘),to_char(sysdate,‘day‘)  into v_date,v_day from dual;
end;

  

时间: 2024-10-08 07:39:33

oracle--存储过程--bai的相关文章

oracle存储过程实例

oracle存储过程实例 分类: 数据(仓)库及处理 2010-05-03 17:15 1055人阅读 评论(2)收藏 举报 认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块.但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存储过程和函数是以命名的方式存储于数据库中的.和PL/SQL程序相比,存储过程有非常多长处,详细归纳例如以下: * 存储过程和函数以命名的数据库对象形式存储于数据库其中.存储在数据库中的长处是非

java怎样将一组对象传入Oracle存储过程

java怎样将一组对象传入Oracle存储过程.须要注意的是jar包是有要求的,假设使用不当会导致仅仅有数字能传过去,字符串传只是去.假设是Oracle11g则须要选用例如以下的jar包,F:\app\Administrator\product\11.2.0\dbhome_1\jlib\orai18n.jar. D:\program\weblogic\oracle_common\modules\oracle.jdbc_11.2.0\ojdbc6.jar 样例例如以下: CREATE OR REP

springMVC + oracle存储过程 构建高性能灵活易维护的java web架构

MVC让简单的业务也变得复杂 不知道你在使用MVC模式开发项目的时候是否觉得很麻烦,一个简单的增删改查动作却要涉及到多个文件操作. 以一条数据增加为例说明. 假设我们使用hibernate并且dao层是已经封装好的 从图中可以看出如果我们在系统中写一个增加功能需要自己动手写的地方至少是 jsp , action , service,servicesImpl 四层. 如果是复杂的添加操作那么我们很可能还会自己定义dao层的接口和方法,那样就是6层操作了. 如果使用mybatis 至少也是写4层,常

Oracle 存储过程

存储过程:就是一组用于完成特定数据库功能的SQL 语句集,该SQL语句集经过编译后存储在数据库系统中.在使用时候,用户通过指定已经定义的存储过程名字并给出相应的存储过程参数来调用并执行它,从而完成一个或一系列的数据库操作. Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常. 1 create or replace procedure 过程名 2 as ...; --声明语句段 3 begin 4 ...; --执行语句段 5 exception --异常处理语句段 6 ...

Oracle 存储过程定义和优点及与函数区别

定义: 存储过程(Stored Procedure )是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中.用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程. 存储过程是由流控制和SQL 语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可.在ORACLE 中,若干个有联系的过程可以组合在一起构成程序包. 优 点: 1.(预编译)存储过程只在创造

jdbc调用 oracle 存储过程操作

创建有参存储函数findEmpNameAndSal(编号),查询7902号员工的的姓名和月薪,[返回多个值,演示out的用法]当返回2个或多个值,必须使用out符号当返回1个值,就无需out符号 create or replace function findEmpNameAndSal(pempno in number,pename out varchar2) return numberas psal emp.sal%type;begin select ename,sal into pename,

Oracle ——存储过程

1.带参数的存储过程CREATE OR REPLACE PROCEDURE sp_pro2 (spname VARCHAR2, newsal NUMBER) ISBEGIN     UPDATE emp SET sal = newsal WHERE ename=spname;END; --参数VARCHAR2不需要指定大小exec sp_pro2('SMITH',10);或者call sp_pro2('SMITH',10); Oracle --存储过程,布布扣,bubuko.com

面试概率极大的Oracle存储过程

1.什么是存储过程.存储过程是数据库服务器端的一段程序,它有两种类型.一种类似于SELECT查询,用于检索数据,检索到的数据能够以数据集的形式返回给客户.另一种类似于INSERT或DELETE查询,它不返回数据,只是执行一个动作.有的服务器允许同一个存储过程既可以返回数据又可以执行动作.2.什么时候需要用存储过程 如果服务器定义了存储过程,应当根据需要决定是否要用存储过程.存储过程通常是一些经常要执行的任务,这些任务往往是针对大量的记录而进行的.在服务器上执行存储过程,可以改善应用程序的性能.这

用java调用oracle存储过程总结(转)

//1.call+包名+存储过程名(传入.传出值用?) String str="{call SMSBUSINESS.deleteZhZMember(?,?,?)}"; //2.建立连接 Connection conn=null; conn=DriverManager.getConnection(); //3.使用java.sql.*类 CallableStatement cs=conn.prepareCall(str); //4.传入in值 cs.setInt(1,id); cs.se

Oracle存储过程的编写经验与优化措施

1.开发人员如果用到其他库的Table或View,务必在当前库中建立View来实现跨库操作,最好不要直接使用"databsevv.dbo.table_name",因为sp_depends不能显示出该SP所使用的跨库table或view,不方便校验. 2.开发人员在提交SP前,必须已经使用set showplan on分析过查询计划,做过自身的查询优化检查. 3.高程序运行效率,优化应用程序,在SP编写过程中应该注意以下几点: a) SQL的使用规范: i. 尽量避免大事务操作,慎用ho