精华内容
下载资源
问答
  • create or replace procedure [()] as|is  --创建过程,可指定运行过程需传递的参数 begin  --包括在过程中要执行的语句  [exception  ] --处理异常 end;

    create or replace  procedure <procedure_name>

    [(<parameter list>)]

    as|is

     <local variable statements>   --创建过程,可指定运行过程需传递的参数

    begin

     <executable statements>       --包括在过程中要执行的语句

     [exception

     <exception handlers>]         --处理异常

    end;

    展开全文
  • 一、Oracle创建存储过程及执行存储过程   这和sql的创建和执行是不一样的。   CREATE OR REPLACE PROCEDURE P_CREATE_T_PM_BILLS_CHECK ( RESULT IN OUT VARCHAR2 ) AS BEGIN RESULT := 1 || RESULT...

     

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    蕃薯耀 2016年6月24日 17:11:33 星期五

    http://fanshuyao.iteye.com/

     

    一、Oracle创建存储过程及执行存储过程

     

    这和sql的创建和执行是不一样的。

     

    CREATE OR REPLACE PROCEDURE P_CREATE_T_PM_BILLS_CHECK 
    (
      RESULT IN OUT VARCHAR2 
    ) AS 
    BEGIN
      RESULT := 1 || RESULT;
    END P_CREATE_T_PM_BILLS_CHECK;
    
    declare 
    param varchar2 (30);
    begin 
      param := 'aaa';
      P_CREATE_T_PM_BILLS_CHECK(param); 
      Dbms_Output.put_line(param);
    end;

     

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    蕃薯耀 2016年6月24日 17:11:33 星期五

    http://fanshuyao.iteye.com/

     

    展开全文
  • oracle存储过程创建语法及常见异常:oracle存储过程语法:CREATE[ORReplace]PROCEDURE[schema.]procedure_name[(argument[{IN|OUT|INOUT}]datatype,...argument[{IN|OUT|INOUT}]datatype)]{IS|AS}[descriptionpart...

    oracle存储过程创建语法及常见异常:

    oracle存储过程语法:

    CREATE[ORReplace]PROCEDURE[schema.]procedure_name

    [(argument[{IN|OUT|INOUT}]datatype,

    ...

    argument[{IN|OUT|INOUT}]datatype)]

    {IS|AS}

    [descriptionpart说明部分]

    BEGIN

    SQLSTATEMENT语句序列

    [EXCEPTION例外处理]

    END[procedureName过程名];

    oracle存储过程

    www.MyException.Cn  网友分享于:2015-02-04  浏览:14746次

    一,oracle存储过程语法

    1.oracle存储过程结构

    CREATE OR REPLACE

    PROCEDURE oracle存储过程名字

    (

    参数1 IN NUMBER,

    参数2 IN NUMBER

    ) IS

    变量1

    INTEGER :=0;

    变量2

    DATE;

    BEGIN

    END oracle存储过程名字

    2.无返回值的oracle存储过程

    create or replace

    procedure xs_proc_no is

    begin

    insert into xuesheng values (3, 'wangwu', 90,

    90);

    commit;

    end xs_proc_no;

    3.有单个数据值返回的oracle存储过程

    create or replace

    procedure xs_proc(temp_name in varchar2,

    temp_num  out number) is

    num_1 number;

    num_2 number;

    begin

    select yu_wen, shu_xue

    into num_1, num_2

    from xuesheng

    where xing_ming = temp_name;

    --dbms_output.put_line(num_1 + num_2);

    temp_num := num_1 + num_2;

    end;

    其中,以上两种与sql server基本类似,而对于返回数据集时,上述方法则不能满足我们的要求。在Oracle中,一般使用ref cursor来返回数据集。示例代码如下:

    4.有返回值的oracle存储过程(列表返回)

    首先,建立我们自己的包。并定义包中的一个自定义ref cursor

    create or replace

    package mypackage as

    type my_cursor is ref cursor;

    end mypackage;

    在定义了ref

    cursor后,可以书写我们的程序代码

    create or replace

    procedure xs_proc_list(shuxue   in

    number,

    p_cursor out mypackage.my_cursor) is

    begin

    open p_cursor for

    select * from xuesheng where shu_xue >

    shuxue;

    end xs_proc_list;

    5.SELECT INTO

    STATEMENT

    将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条

    记录,否则抛出异常(若没有记录则抛出NO_DATA_FOUND)

    例子:

    BEGIN

    SELECT name,age into 变量1,变量2 FROM user where xxx;

    EXCEPTION

    WHEN NO_DATA_FOUND THEN

    xxxx;

    END;

    ...

    6.IF 判断

    IF V_TEST=1 THEN

    BEGIN

    do something

    END;

    END IF;

    7.WHILE 循环

    WHILE V_TEST=1 LOOP

    BEGIN

    XXXX

    END;

    END LOOP;

    8.变量赋值

    V_TEST := 123;

    9.用FOR IN 使用cursor

    ...

    IS

    CURSOR cur IS SELECT * FROM xxx;

    BEGIN

    FOR cur_result in cur LOOP

    BEGIN

    V_SUM :=cur_result.列名1+cur_result.列名2

    END;

    END LOOP;

    END;

    10.带参数的CURSOR

    CURSOR C_USER(C_ID NUMBER) IS SELECT NAME

    FROM USER WHERE TYPEID=C_ID;

    OPEN C_USER(变量值);

    LOOP

    FETCH C_USER INTO V_NAME;

    EXIT FETCH C_USER%NOTFOUND;

    do something

    END LOOP;

    CLOSE C_USER;

    11.用pl/sql developer debug

    连接数据库后建立一个Test WINDOW

    在窗口输入调用SP的代码,F9开始debug,CTRL+N单步调试

    create or replace procedure 存储过程名(param1

    in type,param2 out type)

    as

    变量1 类型(值范围);

    变量2 类型(值范围);

    Begin

    Select count(*) into 变量1 from 表A where列名=param1;

    If (判断条件) then

    Select 列名 into 变量2 from 表A where列名=param1;

    Dbms_output。Put_line(‘打印信息’);

    Elsif (判断条件) then

    Dbms_output。Put_line(‘打印信息’);

    Else

    Raise 异常名(NO_DATA_FOUND);

    End if;

    Exception

    When others then

    Rollback;

    End;

    注意事项:

    1,  存储过程参数不带取值范围,in表示传入,out表示输出

    2,  变量带取值范围,后面接分号

    3,  在判断语句前最好先用count(*)函数判断是否存在该条操作记录

    4,  用select 。。。into。。。给变量赋值

    5,  在代码中抛异常用

    raise+异常名

    以命名的异常

    命名的系统异常                          产生原因

    ACCESS_INTO_NULL                   未定义对象

    CASE_NOT_FOUND                     CASE 中若未包含相应的 WHEN ,并且没有设置

    ELSE 时

    COLLECTION_IS_NULL                集合元素未初始化

    CURSER_ALREADY_OPEN          游标已经打开

    DUP_VAL_ON_INDEX                   唯一索引对应的列上有重复的值

    INVALID_CURSOR                 在不合法的游标上进行操作

    INVALID_NUMBER                       内嵌的 SQL 语句不能将字符转换为数字

    NO_DATA_FOUND                        使用 select into 未返回行,或应用索引表未初始化的

    TOO_MANY_ROWS                      执行 select

    into 时,结果集超过一行

    ZERO_DIVIDE                              除数为 0

    SUBSCRIPT_BEYOND_COUNT     元素下标超过嵌套表或

    VARRAY 的最大值

    SUBSCRIPT_OUTSIDE_LIMIT       使用嵌套表或 VARRAY

    时,将下标指定为负数

    VALUE_ERROR                             赋值时,变量长度不足以容纳实际数据

    LOGIN_DENIED                           PL/SQL 应用程序连接到 oracle 数据库时,提供了不

    正确的用户名或密码

    NOT_LOGGED_ON                       PL/SQL 应用程序在没有连接 oralce 数据库的情况下

    访问数据

    PROGRAM_ERROR                       PL/SQL 内部问题,可能需要重装数据字典& pl./SQL

    系统包

    ROWTYPE_MISMATCH                宿主游标变量与

    PL/SQL 游标变量的返回类型不兼容

    SELF_IS_NULL                             使用对象类型时,在 null 对象上调用对象方法

    STORAGE_ERROR                        运行 PL/SQL 时,超出内存空间

    SYS_INVALID_ID                         无效的 ROWID 字符串

    TIMEOUT_ON_RESOURCE         Oracle 在等待资源时超时

    展开全文
  • 一、Oracle创建存储过程  1、基本语法 create or replace procedure update_emp_sal (Name in out type,  Name in out type, ... ) is begin end update_emp_sal; 2、写一个简单的例子修改emp表...

    转载地址:http://www.cnblogs.com/helong/articles/2093807.html

    一、Oracle创建存储过程

     1、基本语法

    复制代码
    create or replace procedure update_emp_sal (Name in out type,  Name in out type, ... ) is begin end update_emp_sal;
    复制代码

    2、写一个简单的例子修改emp表的ename字段

    复制代码
    create or replace procedure update_emp ( v_empno varchar2, v_ename varchar2 ) is begin update emp set ename=v_ename where empno=v_empno; end update_emp;
    复制代码

    调用方法如下:

    SQL>exec update_emp('7935','test');

    2、有返回值的存储过程

    就写一个简单的返回empno=7935的sal值

    复制代码
    create or replace procedure emp_out_sal ( v_empno in varchar2, v_sal out number ) is vsal number(7,2); begin select sal into vsal from emp where empno=v_empno; v_sal:=vsal; end;
    复制代码

    调用有返回值的过程

    复制代码
    SQL> var vsal number SQL> exec emp_out_sal('7935',:vsal); PL/SQL procedure successfully completed vsal --------- 700 SQL> var vsal number SQL> call emp_out_sal('7935',:vsal); Method called vsal --------- 700
    复制代码

    二、Oracle创建函数(function)

    1、基本语法规则如下:

    create or replace function (Name in type, Name in type, ...) return number is Result number; begin return (Result); end ;

    2、写一个简单的查询例子查询出empno=7935的sal值

    复制代码
    create or replace function ret_emp_sal(v_ename varchar2) return number is v_sal number(7,2); begin select nvl(sal,0) into v_sal from emp where lower(ename)=lower(v_ename); return v_sal; end;
    复制代码

    调用此函数:

    复制代码
    SQL> var vsla number SQL> call ret_emp_sal('7935') into :vsal; Method called vsal --------- 700
    复制代码

    三、Oracle创建包

    包用于组合逻辑相关的过程和函数,它由包规范和包体两个部分组成。包规范用于定义公用的常量、变量、过程和函数,创建包规范可以使用CREATE PACKAGE命令,创建包体可以使用CREATE PACKAGE BODY

    1、创建包规范

    create package emp_pkg is procedure emp_update_ename(v_empno varchar2,v_ename varchar2); function emp_get_sal(v_empno varchar2) return number; end;

    2、创建包体

    复制代码
    create or replace package body emp_pkg is procedure emp_update_ename ( v_empno varchar2, v_ename varchar2 ) is vename varchar2(32); begin update emp set ename=v_ename where empno=v_empno; commit; select ename into vename from emp where empno=v_empno; dbms_output.put_line('雇员名称:'||vename); end; function emp_get_sal ( v_empno varchar2 ) return number is vsal number(7,2); begin select sal into vsal from emp where empno=v_empno; return vsal; end; end;
    复制代码

    在此提示,在没有创建包规范就创建包体,会失败,要使用包,必须先创建包规范,然后在创建包体

    当要调用包的过程和函数时,在过程和函数的名称前加上包名作为前缀(包名.子程序名称),而如果要访问其他方案的包时需要在包的名称前加上方案的名称

    (方案名称.包名.子程序名称)

    实例:

    复制代码
    SQL> var vsla number SQL> call emp_pkg.emp_get_sal('7935') into :vsal; Method called vsal --------- 700 SQL> exec emp_pkg.emp_update_ename('7935','helong'); 雇员名称:helong SQL> call emp_pkg.emp_update_ename('7935','helong'); Method called SQL> select * from dual; DUMMY ----- X 雇员名称:helong
    复制代码
    展开全文
  • oracle存储过程语法: CREATE[ORReplace]PROCEDURE[schema.]procedure_name  [(argument[{IN|OUT|INOUT}]datatype,  ...  argument[{IN|OUT|INOUT}]datatype)]  {IS|AS}  [description...
  • 概述说句实在的,平时工作基本上不会去背啥创建存储过程、...一、Oracle创建存储过程(procedure)存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,它大大提高了SQL语句的功能和灵活性。存储过程编译...
  • Oracle存储过程语法

    2018-07-03 16:13:19
    Oracle存储过程语法Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个...
  • Oracle创建存储过程

    2019-05-10 19:43:00
    存储过程:  存储过程是在oracle中存取完成特定业务逻辑的代码块。... 创建存储过程语法:  create [or replace ] procedure 存储过程的名称[(参数名 [in/out/ inout ] 参数类型,参数名 ....)]is/as ...
  • oracle存储过程基本语法 存储过程 存储过程创建语法
  • Oracle-存储过程语法

    2012-07-17 13:44:46
    存储过程  1 CREATE OR REPLACE PROCEDURE 存储过程名  2 IS ... CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它; 行2
  • oracle存储过程语法

    2011-12-07 17:03:44
    oracle数据库存储过程相关知识简介,存储过程创建语法讲解,包括判断语句、循环、数组遍历、游标使用,后附实例
  • create or replace procedure 存储过程名(param1 in type,param2 out type)  as  变量1 类型(值范围); --vs_msg VARCHAR2(4000);  变量2 类型(值范围); Begin  Select count(*) into 变量1 from 表A ...
  • oracle创建存储过程

    2020-04-22 18:06:05
    -- 删除存储过程 drop procedure EMP_COUNT(存储过程名称) -- 查询存储过程 select distinct name From user_source where type = 'PROCEDURE' ...-- 存储过程的基本语法: CREATE OR REPLACE PROCEDU...
  • 存储过程创建语法:(1)无参createorreplaceprocedure存储过程名as变量1类型(值范围);变量2类型(值范围);Begin........................Exception........................End;(2)带参createorreplaceprocedure存储...
  • 工作中有时候需要自己去创建存储过程,然后调用存储去获得一些数据等,接下来就给大家介绍下MySQL如何创建存储过程语法:CREATE PROCEDURE 存储程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据...
  • Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果...
  • 存储过程创建语法: create or replace procedure 存储过程名(param1 in type,param2 out type) as 变量1 类型(值范围); 变量2 类型(值范围); Begin Select count(*) into 变量1 from ...
  • ORACLE 创建存储过程,存储函数

    千次阅读 2018-06-01 15:11:25
    基本语法create or replace procedure 名字--create or replace 意思是创建或者替换as--可以在此定义参数begin 语句;end;例:create or replace procedure sayhello as --说明 相当与declare begin ...
  • 一、Oracle创建存储过程 1、基本语法 create or replace procedure update_emp_sal (Name in out type,  Name in out type, ... ) is begin end update_emp_sal; 2、写一个简单的例子修改emp表的ename字段 ...
  • Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果...
  • oracle10g存储过程语法

    2012-09-27 16:20:15
    oracle10g存储过程语法:存储过程创建语法、定义游标
  • oracle 存储过程语法

    2017-03-08 17:42:20
    -- 存储过程语法结构 create [or replace] procudure(存储过程关键字) pro_name(自定义存储过程名称) (argument1 datatype,.....) is[as] 声明 begin ... exception ... end; select * from emp2...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 846
精华内容 338
关键字:

oracle创建存储过程语法