zoukankan      html  css  js  c++  java
  • ORACLE如何实现函数、包、存储过程的导入和导出

    建 议可以用常规的检查,检查一下:数据字典信息/exp 导出结构检查

    1.检查

    SELECT * FROM ALL_SOURCE t WHERE T.OWNER = '要查询用户' AND t.TYPE = 'PACKAGE BODY'

    select * from USER_SOURCE where type = 'PACKAGE'

    2.exp 结构。检查方法如下:

    http://blog.csdn.net/ideality_hunter/article/details/52087012

    oracle怎么导出function和procedure,即函数和存储过程?

    1通过在cmd中 使用exp,导出为dmp格 式。

    2通过plsql工 具的Tools->export user objects,导出 为sql格式。状态由红变黑,表示导出成功了。

    注 意不要导出owner、storage、privilege等。

    3.关于存储过程加密也是一种可能。文档如下:

    http://www.cnblogs.com/matrixworld/p/5446254.html

    4.

    请把procedure(HSDB_DB)发给我。

    -> package 只可以到包的主体。

    -> package bodies 可以看到包的bodys

    ->在PL/SQL developer 选择 存储过程,也会出现提示 是不是存储过程。

    5.存储过程分析

    https://www.cnblogs.com/dc-earl/articles/9260111.html

    oracle存储过程(一):简单入门

     

    一、定义

        存储过程是一组为了完成特定功能的SQL语句,经编译后存储在数据库中。

       点击查看优缺点。

    二、存储过程简单入门

        第一个存储过程:打印hello word, my name is stored procedure内容

    1
    2
    3
    4
    5
    create or replace procedure myDemo01
    as
    begin
      dbms_output.put_line('hello word, my name is stored procedure');
    end;

    create or replace procedure:关键字用来创建或覆盖一个原有的存储过程。

    myDemo01:自定义的存储过程的名字。
    as:关键字。
        注:
            在存储过程(PROCEDURE)和函数(FUNCTION)中没有区别;

           在视图(VIEW)中只能用AS不能用IS;

           在游标(CURSOR)中只能用IS不能用AS。

    begin:关键字。
    dbms_output.put_line('hello word, my name is stored procedure'); 输出内容。
    end;关键字。

        存储过程的调用

    1
    2
    3
    4
    5
    6
    7
    8
    declare
    begin
      myDemo01;
    end;
     
    begin
      myDemo01; --在此处也可使用myDemo01();完成存储过程的调用
    end;
    1
    call myDemo01();--call 存储过程名可完成调用,注意括号不能少
    1
    2
    3
    4
    SQL> set serveroutput on --可以再command命令窗口执行
    SQL> exec mydemo01 --下面是输出结果
    hello word, my name is stored procedure
    PL/SQL procedure successfully completed

    三种方式可以完成存储过程的调用,分别为声明declare关键字和不声明declare关键字;call和Commond窗口执行命令。执行的结果如下所示

    第二个存储过程:变量声明,赋值

    1
    2
    3
    4
    5
    6
    7
    8
    9
    create or replace procedure myDemo02
    as
    name varchar(10);--声明变量,注意varchar需要指定长度
    age int;
    begin
      name:='xiaoming';--变量赋值
      age:=18;
      dbms_output.put_line('name='||name||', age='||age);--通过||符号达到连接字符串的功能
    end;

    第三个存储过程:带有参数的存储过程

    1
    2
    3
    4
    5
    6
    7
    8
    9
    create or replace procedure myDemo03(name in varchar,age in int)
    as
    begin
      dbms_output.put_line('name='||name||', age='||age);
    end;
     
    begin
      myDemo03('xiaoming',18);
    end;

      在调用存储过程时,如果存储过程没有参数,调用时括号()可以不带。

            存储过程带参数需要注意参数的传递参数时的一致性,按顺序依次传递。

    第四个存储过程:实参形参问题

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    create or replace procedure myDemo04(name in varchar,age in int)
    as
    begin
      dbms_output.put_line('name='||name||', age='||age);
    end;
     
    declare
     name varchar(10);
     age int;
    begin
      name:='xiaoming';
      age:=18;
      myDemo04(name=>name,age=>18);--此时不能myDemo04(name=>name,18),不能完成调用。
    1
    end;

    注;在调用存储过程时,=>前面的变量为存储过程的形参且必须于存储过程中定义的一致,而=>后的参数为实际参数。当然也不可以不定义变量保存实参

    第五个存储过程:in,out参数问题

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    create or replace procedure myDemo05(name out varchar,age in int)
    as
    begin
           dbms_output.put_line('age='||age);
      select 'xiaoming' into name from dual;
    end;
     
    declare
     name varchar(10);
     age int;
    begin
      myDemo05(name=>name,age=>10);
      dbms_output.put_line('name='||name);
    end;

     注:in代表输入,out用于输出,参数默认类型是in类型。

    第六个存储过程:异常问题,执行结果见下图

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    create or replace procedure mydemo0006
    as
    age int;
    begin
      age:=10/0;
      dbms_output.put_line(age);
      exception when others   then
        dbms_output.put_line('error');
    end;
     
    begin
      mydemo0006();
    end;

    总结:简单学习oracle存储过程,在oracle存储过程(二)将对两种循环以及增删改查操作做进一步的认识。

    作者: i孤独行者
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
     
    分类: oracle
  • 相关阅读:
    教师节快乐!
    来自学长同学分享的学习方法
    刘奕佳: 我的职校新生活 | 班级日常分享
    19级:班级日常分享 | 一天一瞬间
    珍惜、珍爱!
    19级:班级日常分享 | 一天一瞬间
    204787 ,194787 |0001 1131 0001 4226 7035 ![2480 ]
    1-N的自然数中,少了一个,找出这个数 小强斋
    获取某一天之前或者之后多少天的日期 小强斋
    获取某一天之前或者之后多少天的日期 小强斋
  • 原文地址:https://www.cnblogs.com/feiyun8616/p/7249605.html
Copyright © 2011-2022 走看看