zoukankan      html  css  js  c++  java
  • ORACLE存储过程【转载】

    ORACLE存储过程【转载】
    http://blog.bossma.cn/archives/2008/01/80

    1、插入数据:
    向一张表里插入若干条数据
    1. /*
    2. 创建表tb1
    3. 包含两个字段col1、col2
    4. */
    5. create table tb1(
    6. col1 char(20),
    7. col2 char(20));
    8.  
    9. /*插入数据的存储过程*/
    10. CREATE OR REPLACE PROCEDURE INSERTAMOUNTTEST
    11. (
    12. ST_NUM        IN     NUMBER,/*起始数值*/
    13. ED_NUM        IN     NUMBER/*结束数值*/
    14. )
    15. IS
    16. BEGIN
    17. declare
    18.        i   number;
    19. begin
    20. /*循环插入*/
    21. FOR i IN ST_NUM..ED_NUM LOOP
    22. INSERT INTO tb1 values(i,'test');
    23. END LOOP;
    24. end;
    25. commit;
    26. /*异常处理*/
    27. EXCEPTION
    28. WHEN OTHERS THEN
    29. rollback;
    30. END;
    31.  
    32. /*在CommondLine下执行*/
    33. exec INSERTAMOUNTTEST(1,2000);

    2、更新数据

    1. CREATE OR REPLACE PROCEDURE UPDATEAMOUNTTEST
    2. (
    3. WHERE_NUM IN VARCHAR2/*SQL语句条件值*/
    4. )
    5. IS
    6. BEGIN
    7. UPDATE tb1 SET col2='test2' where col1 like WHERE_NUM||'%';
    8. /*异常处理*/
    9. EXCEPTION
    10. WHEN OTHERS THEN
    11. rollback;
    12. END;
    13.  
    14. /*在CommondLine下执行*/
    15. exec UPDATEAMOUNTTEST('11');

    3、存储过程之间的调用
    以一个查询更新为例子

    1. /*
    2. 查询更新存储过程,调用更新存储过程UPDATEAMOUNTTEST2
    3. */
    4. CREATE OR REPLACE PROCEDURE SELECTUPDATETEST
    5. (
    6. tJStr IN CHAR
    7. )
    8. is
    9.   upStr CHAR(20);
    10. begin
    11. /*
    12. 查询出要更新的字段值
    13. */
    14. select a.col2 into upStr from tb1 a where a.col1 = tJStr;
    15. /*
    16. 调用更新存储过程
    17. 传入用于更新的两个参数
    18. */
    19. UPDATEAMOUNTTEST2('11',upStr);
    20. end SELECTUPDATETEST;
    21.  
    22. /*
    23. 更新用的存储过程,被SELECTUPDATETEST调用
    24. */
    25. CREATE OR REPLACE PROCEDURE UPDATEAMOUNTTEST2
    26. (
    27. WHERE_NUM IN VARCHAR2,/*更新条件*/
    28. SET_NAME IN VARCHAR2/*更新后的字段值*/
    29. )
    30. IS
    31. BEGIN
    32. UPDATE tb1 SET col2=SET_NAME where col1 like WHERE_NUM||'%';
    33. EXCEPTION
    34. WHEN OTHERS THEN
    35. rollback;
    36. END;

    在测试的过程中遇到查询不到值的问题,经确认是字符串类型的问题,所以一定要考察字段的字符串类型与传入的参数类型是否一致。
    关于这个问题,下边这篇文章给与了详细说明:
    [关于数据类型的比较规则(Datatype Comparison Rules)]http://sonic.itpub.net/post/17575/93972

    另外ORACLE的关键字可在v$reserved_words视图中查看
    select * from v$reserved_words order by keyword


  • 相关阅读:
    linux 串口调试总结
    linux 环境变量的设置方法
    linux 内核的配置和编译
    linux 串口应用程序的编写指南
    linuxdifff 和 patch 的使用指南
    linux shell 的学习随笔
    特性阻抗和频率有关吗?
    linux source和export命令的使用
    关于SI设计与SI仿真的一点浅见
    LINUX下的tty,console与串口分析
  • 原文地址:https://www.cnblogs.com/lauer0246/p/1226358.html
Copyright © 2011-2022 走看看