精华内容
下载资源
问答
  • oracle存储过程的使用很普遍,如何进行简单的存储过程的编写,这就需要自己去长时间进行练习并加以实践,在练习与实践的过程中才能理解其中的定义。相信世间是检验真理的唯一标准。

    —题目:求emp表中某个员工的姓名,薪水以及职位

    一、进行oracle存储过程模式的编写

    create or replace procedure test1 (eno in number,
    pname out varchar2,
    psal out varchar2,
    pjob out varchar2)
    as
    begin
    –写sql语句求员工姓名、薪水和职位
    select ename,sal,job into pname, psal, pjob from emp where empno=eno;
    end;

    二、语句的解析

    1. create or replace procedure test1
      create or replace procedure 是创建或者修改存储过程的固定语句模式,而test1是自己给存储过程起的名字(根据自己的想法取的名字)。
    2. create or replace procedure test1 (eno in number,
      pname out varchar2,
      psal out varchar2,
      pjob out varchar2)

    存储过程名字后边的括号中代表参数,in代表输入参数,out代表输出参数。上边的语句中有四个参数,一个输入参数和三个输出参数。in或者out后边是类型。

    1. 参数后边的
      /as
      begin
      –写sql语句求员工姓名、薪水和职位
      select ename,sal,job into pname, psal, pjob from emp where empno=eno;
      end;
      / 中,
      /*as
      begin

    end;*/
    是固定模式,
    而begin后则是写题目中要求的查询员工的姓名、薪水和工作岗位
    select ename,sal,job into pname, psal, pjob from emp where empno=eno;

    plsql中的实践
    以上便是我个人对本道题的解答以及理解。如果有啥不准确的地方或者理解得不到位得地方,望各位大佬进行指点,本人将会感激不尽。

    展开全文
  • Oracle存储过程带参分为:输入参数(in)和输出参数(out) 例如: 1 create or replace procedure out_test(v_user in emp.user_name%type, 2 v_salary out emp.salary%type, 3 ...

    Oracle中存储过程带参分为:输入参数(in)和输出参数(out)

    例如:

     1 create or replace procedure out_test(v_user   in emp.user_name%type,
     2                                      v_salary out emp.salary%type,
     3                                      v_deptno out emp.emp_deptno%type) as
     4 begin
     5   select salary, emp_deptno
     6     into v_salary, v_deptno
     7     from emp
     8    where user_name = v_user;
     9 exception
    10   when NO_DATA_FOUND then
    11     dbms_output.put_line('No data found');
    12   when TOO_MANY_ROWS then
    13     dbms_output.put_line('Too many rows found');
    14 end out_test;

    在命令行中调用该存储过程,利用绑定变量

     1 SQL> var v_user varchar2(20);
     2 SQL> var v_salary number;
     3 SQL> var v_deptno number;
     4 SQL> exec :v_user := 'Lisi';
     5  
     6 PL/SQL procedure successfully completed
     7 v_user
     8 ---------
     9 Lisi
    10  
    11 SQL> exec out_test(:v_user, :v_salary, :v_deptno);
    12  
    13 PL/SQL procedure successfully completed
    14 v_user
    15 ---------
    16 Lisi
    17 v_salary
    18 ---------
    19 v_deptno
    20 ---------

    在plsql developer中执行带的存储过程,无参可以直接执行,带in类型的参数要输入变量值,带out类型的不用输入,会在plsql下面输出结果

     

     

    在hibernate的 EJB()调用存储过程 中执行存储过程

     

     

    EJB调用存储过程
         要调用存储过程,我们可以通过EntityManager 对象的createNativeQuery()方法执行SQL 语句(注意:这里说的是SQL 语句,不是EJB3 QL), 调用存储过程的SQL 格式如下:
         {call 存储过程名称(参数1, 参数2, … )}
         在EJB3 中你可以调用的存储过程有两种
         1.无返回值的存储过程。
         2.返回值为ResultSet(以select 形式返回的值)的存储过程,EJB3 不能调用以OUT 参数返回值的存储过程

    1.调用无返回值的存储过程
       //调用无返回参数的存储过程
       Query query = em.createNativeQuery("{call Procedure()}");
       query.executeUpdate();

    2.调用返回单值的存储过程
       //调用返回单个值的存储过程
       Query query = em.createNativeQuery("{call GetPersonName(?)}");
       query.setParameter(1, new Integer(1));
       String result = query.getSingleResult().toString();

    3.调用返回表全部列的存储过程
       在调用存储过程时,可以让EJB3 Persistence 运行环境将列值直接填充入一个Entity 的实例(本例填充进Person 对象),并将实例作为结果返回
       //调用返回Person 全部列的存储过程
       Query query = em.createNativeQuery("{call GetPersonList()}", Person.class);
       List result = query.getResultList();
    存储过程GetPersonList:
       CREATE PROCEDURE `GetPersonList`()
       NOT DETERMINISTIC
               SQL SECURITY DEFINER
               COMMENT ''
        BEGIN
                  select * from person;
        END;

    4.调用返回部分列的存储过程
       创建存储过程:
       CREATE PROCEDURE `GetPersonPartProperties`()
                      NOT DETERMINISTICSQL SECURITY DEFINER
                      COMMENT ''
       BEGIN
                      SELECT personid, personname from person;
       END;
       //调用返回部分列的存储过程
       Query query = em.createNativeQuery("{call GetPersonPartProperties()}");
       List result = query.getResultList();

     

    转载于:https://www.cnblogs.com/zl520/p/11161940.html

    展开全文
  • --带参存储过程create or replace procedure testdate(v in number) is i number; begin i:=v;select EN_ID,EN_NAME,ASA_CODE,ASA_NAME,0 AS_YESTERDAY,i DATEKEEY from testtable where EN_ID not in (select ...
    --带参存储过程
    create
    or replace procedure testdate(v in number) is i number; begin i:=v;select EN_ID,EN_NAME,ASA_CODE,ASA_NAME,0 AS_YESTERDAY,i DATEKEEY from testtable where EN_ID not in (select EN_ID from test2table where datekeey = i) union select EN_ID,EN_NAME,ASA_CODE,ASA_NAME,AS_YESTERDAY,DATEKEEY from test2table where datekeey = i; commit; end testdate;
    --存储过程中for循环调用存储过程,
    create
    or replace procedure testdate2 is Cursor datekeey is select to_number(to_char(datekeey,'yyyyMMdd')) datekeey from ( select date'2017-01-01' + (rownum - 1) datekeey from dual connect by rownum <= (date'2018-09-18' - date'2017-01-01' + 1) ); --遍历日期的起始 i number; begin for i in datekeey LOOP begin testdate(i.datekeey); --dbms_output.put_line(i.datekeey); end; end LOOP; commit; end testdate2;

     

    转载于:https://www.cnblogs.com/schoolbag/p/9674776.html

    展开全文
  • Oracle存储过程调用带参存储过程

    万次阅读 2017-05-25 13:28:14
    Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。 Oracle存储过程可以有无参数存储过程参数存储过程。  一、无参程序过程语法 1 create or replace procedure ... 二、带参存储过程

    Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。

    Oracle存储过程可以有无参数存储过程和带参数存储过程。 
    、无参程序过程语法

    1 create or replace procedure  NoParPro
    2 as
      ;
    3 begin

    4  ;
    5 
    exception     //存储过程异常
    6 
        ;
    7 end
    ;
    8 

            二、带参存储过程实例

     1 create or replace procedure queryempname(sfindno emp.empno%type) as
     2        sName emp.ename% type;
     3        sjob emp.job%
    type;
     4 begin

     5        ....
     7 exception
              ....
    14 end ;
    15 

        三、 带参数存储过程含赋值方式
     1 create or replace procedure runbyparmeters  (isal in emp.sal% type,
                                sname out 
    varchar,sjob in out varchar
    )
     2  as icount number
    ;
     3  begin

     4       select count(*into icount from emp where sal>isal and job= sjob;
     5       if icount=1 then

     6         ....
     9       else
    10         ....
    12       end if ;
    13 
     exception
    14       when too_many_rows then

    15       DBMS_OUTPUT.PUT_LINE('返回值多于1行' );
    16       when others then

    17       DBMS_OUTPUT.PUT_LINE('在RUNBYPARMETERS过程中出错!' );
    18  end
    ;
    19 

      四、在Oracle中对存储过程的调用
      过程调用 方式一
     1 declare
     2        realsal emp.sal% type;
     3        realname varchar(40
    );
     4        realjob varchar(40
    );
     5  begin   //存储过程调用开始

     6        realsal:=1100 ;
     7        realname:=''
    ;
     8        realjob:='CLERK'
    ;
     9        runbyparmeters(realsal,realname,realjob);     --
    必须按顺序
    10        DBMS_OUTPUT.PUT_LINE(REALNAME||'   '||
    REALJOB);
    11  END
    //过程调用结束
    12 

      过程调用方式二
     1 declare
     2       realsal emp.sal% type;
     3       realname varchar(40
    );
     4       realjob varchar(40
    );
     5 begin    //过程调用开始

     6       realsal:=1100 ;
     7       realname:=''
    ;
     8       realjob:='CLERK'
    ;
     9       runbyparmeters(sname=>realname,isal=>realsal,sjob=>realjob);  --
    指定值对应变量顺序可变
    10       DBMS_OUTPUT.PUT_LINE(REALNAME||'   '||
    REALJOB);
    11 END
    //过程调用结束
    12 
    展开全文
  • ORACLE存储过程

    万次阅读 多人点赞 2018-11-02 18:14:48
    oracle存储过程 目录 一.什么是存储过程 二.为什么要写存储过程 三.存储过程基础 1.存储过程结构 2.存储过程语法 3.pl/sql处理存储过程 四.存储过程进阶 1.BUIK COLLECT 2.FORALL 3.pl/sql调试存储过程 ...
  • 存储过程: create or replace procedure my_procedure(in_no in number,in_name in varchar2) is begin insert into emp(empno,ename) values(in_no,in_name); ...
  • JDBC调存储过程的实现代码创建基本数据访问类业主表实体类JDBC调用存储过程测试JDBC调用存储过程 创建基本数据访问类 /** * @author * @version 1.0 * @Description 基本数据访问类(获取数据库连接 关闭资源) *...
  • Oracle存储过程包含三部分Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。Oracle存储过程可以有无参数存储过程参数存储过程。一、无参程序过程语法1...8二、带参存储过程实例1create...
  • oracle 创建无参存储过程

    千次阅读 2014-09-23 15:26:57
    create or replace procedure pro_miss_history as t_waybillNo varchar2(20); t_checkCode varchar2(20); t_checkTime date; t_missTime date; t_compareTime da...
  • 今天下午写了个含有参数,游标的存储过程。算是把这个问题给解决了。  本人需求大致如下:现有临时表"Sheet1$",数据是直接从excel的sheet1中读取然后自定义的,所以表名比较怪异。还有两张表分别是f_...
  • * 调用存储过程 更新日志数据 * @param lids 主键 * @param para 接口参数 * @param msg 返回信息 */ public static void callpProcedure(String lids,String para,String msg) { Connection ...
  • oracle 参数存储过程

    2008-11-18 11:21:12
    执行输出参数的存储过程 SQL> var c varchar2(10); SQL> exec test('01',:c) 01输入参数 c :输出参数。 exec 换成 call 也可以。 --例子 create or replace procedure test ( name ...
  • --使用存储过程--创建无参存储过程create or replace procedure showAllStudentInfo--参数变量as--自定义变量s_name varchar(20);s_score number(6);cursor cur_student is select * from student;begindbms_output....
  • 这里写自定义目录标题oracle 返回值的存储过程 oracle 返回值的存储过程 CREATE OR REPLACE PROCEDURE P_Bak ( p_OperatorMan IN VARCHAR2, --入 ReturnValue out int --返回值 ) AS  BEGIN  ReturnValue:=...
  • VB 调用oracle 返回值的存储过程 DEMO
  • Oracle带参数存储过程

    2009-09-07 11:07:00
    参数的存储过程  三种类型的参数   in 读入参数 , 主程序向过程传递参数值  out 读出参数 , 过程向主程序传递参数值  in out 双向参数 , 过程与主程序双向交流数据 create or ...
  • 包头:声明的所有方法,包括存储函数、存储方法CREATE OR REPLACE PACKAGE PORTALATATISTICSPACKAGE AS--自定义游标...--存储过程定义procedure PORTALATATISTICSList(startTime IN VARCHAR2,endTime IN VARCHAR2,po...
  • 本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法。分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL。 首先,在数据库端创建简单的存储过程。 create or replace ...
  • Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。Oracle存储过程可以有无参数存储过程参数存储过程。一、无参程序过程语法create or ...二、带参存储过程实例create or replace procedu...
  • mybatis调用oracle存储过程 存储过程: create or replace PROCEDURE SP_YDD_HSSRHZ( ad_date_b date, ad_date_e date, ...
  • C#调用Oracle自定义类型存储过程Oracle存储为type类型,对于不熟悉Oracle朋友,可以参考来调用。实现思路和正常调MSSQL一样,先建立连接,再定义一个IOracleCustomType的类,然后Oracle.DataAccess.dll的...
  • Oracle存储过程可以有无参数存储过程参数存储过程。  一、无参程序过程语法 1 create or replace procedure NoParPro 2 as ;... 二、带参存储过程实例  1 create or replace p
  • 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储...
  • 这是存储过程,有out(输出)类型 1.先写xml映射文件 <select id="call" parameterType="java.util.HashMap" statementType="CALLABLE" resultType="java.util.HashMap"> <!--call 包名.方法名(参数)--...
  • 1.如果是命令窗口就用exec 存储过程名:1EXECprocedure;--procedure是存储过程名2.如果是 SQL窗口就用 begin 存储过程名 end;123beginprocedure;--procedure是存储过程名end;3.如果是程序中调用就用 call 存储过程名...
  • 创建Oracle存储过程 Oracle存储过程定义 create [or replace] procedure 存储过程名( 入名 in|out(in:入,out 出) 类型,入名 in|out 类型,) is|as (is或者as 两个任选一个) begin 业务逻辑过程 ...
  • mybatis调用带入和出oracle存储过程 存储过程: create or replace procedure Proc_GenerateSequence ( a VARCHAR, b VARCHAR, c VARCHAR, d VARCHAR, p_N_SEQUENCE out int ) is nconfer int...
  • Oracle -PLSQL存储过程游标当出

    千次阅读 2014-09-10 22:07:35
    包头: create or replace package ProdureceCursorData is type curtype is ref cursor; type type_record is record (  deptno NUMBER(2) ,  dname VARCHAR2(14),  loc VARCHAR2(13) );...PR

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,270
精华内容 5,708
关键字:

oracle带参存储过程