---创建表
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, NAME)
values ('3', 'wangwu');

insert into TESTTABLE (ID1, NAME)
values ('4', 'xiaoliu');

insert into TESTTABLE (ID1, NAME)
values ('5', 'laowu');
---创建存储过程
create or replace procedure test_count
as
v_total number(1);
begin
  select count(*) into v_total from TESTTABLE;
  DBMS_OUTPUT.put_line('总人数:'||v_total);
end;
--准备
--线对scott解锁:alter user scott account unlock; 
--应为存储过程是在scott用户下。还要给scott赋予密码
---alter user scott identified by tiger;
---去命令下执行
EXECUTE test_count;
----在ql/spl中的sql中执行
begin
  -- Call the procedure
  test_count;
end;

create or replace procedure TEST_LIST
      AS 
      ---是用游标
        CURSOR test_cursor IS select t.id1,t.name from TESTTABLE t;
      begin
        for Test_record IN test_cursor loop---遍历游标,在打印出来
           DBMS_OUTPUT.put_line(Test_record.id1||Test_record.name);
           END LOOP;
            test_count;--同时执行另外一个存储过程(TEST_LIST中包含存储过程test_count)
            end;
      -----执行存储过程TEST_LIST
      begin 
         TEST_LIST;
         END;
       ---存储过程的参数
        ---IN  定义一个输入参数变量,用于传递参数给存储过程   
        --OUT 定义一个输出参数变量,用于从存储过程获取数据   
        ---IN OUT  定义一个输入、输出参数变量,兼有以上两者的功能  
        --这三种参数只能说明类型,不需要说明具体长度 比如 varchar2(12),defaul 可以不写,但是作为一个程序员最好还是写上。
        
      ---创建有参数的存储过程
      create or replace procedure test_param(p_id1 in VARCHAR2 default '0')
        as v_name varchar2(32);
        begin
          select t.name into v_name from TESTTABLE t where t.id1=p_id1;
          DBMS_OUTPUT.put_line('name:'||v_name);
         end;
      ----执行存储过程
      begin
         test_param('1');
       end;
       
       default '0'

---创建有参数的存储过程
      create or replace procedure test_paramout(v_name OUT VARCHAR2 )
        as  
        begin
          select name into v_name from TESTTABLE where id1='1';
          DBMS_OUTPUT.put_line('name:'||v_name);
         end;
      ----执行存储过程
    DECLARE  
        v_name VARCHAR2(32);   
        BEGIN  
        test_paramout(v_name);
        DBMS_OUTPUT.PUT_LINE('name:'||v_name);   
        END;  
    -------IN OUT
    ---创建存储过程
    create or replace procedure test_paramINOUT(p_phonenumber in out varchar2)
    as  
    begin 
      p_phonenumber:='0571-'||p_phonenumber;
    end;
    
    ----
    DECLARE  
    p_phonenumber VARCHAR2(32);  
    BEGIN  
    p_phonenumber:='26731092';  
    test_paramINOUT(p_phonenumber);  
    DBMS_OUTPUT.PUT_LINE('新的电话号码:'||p_phonenumber);  
    END;  
    -----sql命令下,查询当前用户的存储过程或函数的源代码,
    -----可以通过对USER_SOURCE数据字典视图的查询得到。USER_SOURCE的结构如下:
    
    SQL> DESCRIBE USER_SOURCE ;
    Name Type           Nullable Default Comments                                                                                                      
    ---- -------------- -------- ------- ------------------------------------------------------------------------------------------------------------- 
    NAME VARCHAR2(30)   Y                Name of the object                                                                                            
    TYPE VARCHAR2(12)   Y                Type of the object: "TYPE", "TYPE BODY", "PROCEDURE", "FUNCTION",
    "PACKAGE", "PACKAGE BODY" or "JAVA SOURCE" 
    LINE NUMBER         Y                Line number of this line of source                                                                            
    TEXT VARCHAR2(4000) Y                Source text                                                                                                   
    SQL> 
    ---查询出存储过程的定义语句
    select text from user_source WHERE NAME='TEST_COUNT';
    ----查询存储过程test_paramINOUT的参数
    SQL> DESCRIBE test_paramINOUT;
    Parameter     Type     Mode   Default? 
    ------------- -------- ------ -------- 
    P_PHONENUMBER VARCHAR2 IN OUT  
    SQL> 
    ---查看当前的存储过程的状态是否正确,
    ---VALID为正确,INVALID表示存储过程无效或需要重新编译
    SELECT STATUS FROM USER_OBJECTS WHERE OBJECT_NAME='TEST_COUNT';
    -----如果要检查存储过程或函数的依赖性,可以通过查询数据字典USER_DENPENDENCIES来确定,该表结构如下:
    SQL> DESCRIBE USER_DEPENDENCIES;
    Name                 Type          Nullable Default Comments                                                   
    -------------------- ------------- -------- ------- ---------------------------------------------------------- 
    NAME                 VARCHAR2(30)                   Name of the object                                         
    TYPE                 VARCHAR2(17)  Y                Type of the object                                         
    REFERENCED_OWNER     VARCHAR2(30)  Y                Owner of referenced object (remote owner if remote object) 
    REFERENCED_NAME      VARCHAR2(64)  Y                Name of referenced object                                  
    REFERENCED_TYPE      VARCHAR2(17)  Y                Type of referenced object                                  
    REFERENCED_LINK_NAME VARCHAR2(128) Y                Name of dblink if this is a remote object                  
    SCHEMAID             NUMBER        Y                                                                           
    DEPENDENCY_TYPE      VARCHAR2(4)   Y                                                                               
    SQL>  
    ---查询存储过程TEST_COUNT的依赖关系
    SELECT REFERENCED_NAME,REFERENCED_TYPE FROM USER_DEPENDENCIES WHERE NAME='TEST_COUNT';

转载于:https://www.cnblogs.com/523823-wu/p/7635336.html

java 存储过程简单例子相关推荐

  1. Java Socket简单例子、readLine()、readUTF()

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/51752701 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...

  2. Java序列化简单例子

    首先来看看要序列化的对象 Person.java package com.zjut.yunfeiyang; import java.io.Serializable; public class Pers ...

  3. java多态简单例子6_Java_6、面向对象——继承和多态

    继承 •继承是面向对象编程的三大特征之一,是一种基于已有类来创建新类的机制.由继承而得到的类称为子类(或派生类),被继承的类称为父类(或超类). •Java中每个类只允许有一个父类.语法如下:clas ...

  4. Oracle中的存储过程简单例子

    http://blog.csdn.net/o9109003234/article/details/24910039 ---创建表 create table TESTTABLE (   id1  VAR ...

  5. java c 简单例子_通过一个简单的例子来理解C语言中的LAPACK调用

    我是LAPACK和C / Fortran接口的初学者 . 我需要在Mac OS-X Lion上使用LAPACK / BLAS解决线性方程和特征值问题 . OS-X Lion提供优化的BLAS和LAPA ...

  6. java多态的简单例子_要JAVA的简单例子,继承\多态的,详细讲解运行的每一步

    java中的多态是动态绑定的,也就是说在编译期不能确定一个方法的执行体是哪个方法(在继承中重写的方法).执行果支委会根据在堆上分配的的引用去寻找方法体,所以产生你你所不想要的结果是正常的也是正确的.改 ...

  7. JAVA lambda 简单例子

    多了不说直接上代码 package com.example.demo; import java.util.ArrayList; import java.util.Arrays; import java ...

  8. java hashtable import,Hashtable的一个简单例子

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 以下是关于Hashtable的简单例子,谁知道别的遍历Hashtable的方法,请回复! package no1; import java.util.En ...

  9. java 国际化例子_JavaSE 国际化 简单例子

    ①在src下添加两个文件: base_zh_CN.properties Test=\u8fd9\u662f\u4e2d\u6587 base_en_US.properties Test=english ...

最新文章

  1. 了解因果论:从珀尔的《为什么》开始
  2. Linux系统调用--getrlimit()与setrlimit()函数详解
  3. android 5.0 设置铃声,android5.0联系人铃声设置和来电读取分析
  4. closewait一直不释放_夏至太阳庆典 || 巨蟹座日蚀新月大释放蜡烛魔法仪式(寻找新的幸运儿)...
  5. xpath之string(.)方法
  6. leetcode235. 二叉搜索树的最近公共祖先
  7. html加入购物车的动画,关于购物车添加按钮的动画
  8. MIT深度学习课堂开课啦,自动驾驶圈大牛排队来讲课丨资源
  9. Python快速生成注释文档
  10. 二叉搜索树 java版
  11. The Django Book
  12. 三维动画制作软件有哪些?
  13. win10不能访问服务器共享文件夹权限,win10没有权限访问共享文件夹(有效解决共享文件夹权限问题)...
  14. 点亮LED灯及IAR调试
  15. eoj 3279 爱狗狗的两个dalao(dfs)
  16. kibana Unable to connect to Elasticsearch at http://elasticsearch:9200.
  17. Js 高德地图SDK
  18. 科软分数线狂降53分!凡是隔壁却。。。
  19. 「镁客·请讲」Video++董慧智:让AI融入消费级视频,我们打开了视频的“黑盒子”...
  20. html制作京东新闻资讯页,京东店铺怎么建立活动页面?如何实现具有视频的活动页?...

热门文章

  1. 让网站和APP更具动感的几点建议
  2. 用cisco设备解决ARP病毒
  3. 去年微软颁发1360万美元奖励,中国提交的漏洞报告数量位列前三强
  4. 苹果修复严重的代码执行漏洞,影响 iOS 和 iPadOS 操作系统
  5. 这些严重的 Slack桌面劫持漏洞仅值区区1750美元?
  6. 奇怪,勒索软件Ryuk 新版本把这些 *UNIX 文件夹列入了黑名单
  7. DBA主宰一切请求,MySQL 查询重写
  8. Java设计模式之工厂方法模式与抽象工厂模式
  9. 教你6步定制你的Ubuntu桌面
  10. 大文件数据导出(后台执行,自动生成)