zoukankan      html  css  js  c++  java
  • ORACLE存储过程

    存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
    由此可见编写存储过程可以提高查询和存储的效率。
    以下以oracle为例,做一些简单的存储过程编写,利用navicat作为编辑器,这与PL/SQL中某些语句输入方式不太相同。
    首先列出表的一些信息:用户(模式):MEDIVH,表名:admin
    创建的sql语句:
    <span style="font-size:14px;">/*
    Navicat Oracle Data Transfer
    Oracle Client Version : 10.2.0.5.0
    
    Source Server         : medivh
    Source Server Version : 100200
    Source Host           : 192.168.1.103:1521
    Source Schema         : MEDIVH
    
    Target Server Type    : ORACLE
    Target Server Version : 100200
    File Encoding         : 65001
    
    Date: 2014-07-22 09:47:46
    */
    
    
    -- ----------------------------
    -- Table structure for admin
    -- ----------------------------
    DROP TABLE "MEDIVH"."admin";
    CREATE TABLE "MEDIVH"."admin" (
    "username" VARCHAR2(24 BYTE) NULL ,
    "pwd" VARCHAR2(64 BYTE) NULL ,
    "id" NUMBER(24) NULL
    )
    LOGGING
    NOCOMPRESS
    NOCACHE
    
    ;
    
    -- ----------------------------
    -- Records of admin
    -- ----------------------------
    INSERT INTO "MEDIVH"."admin" VALUES ('LISI', '834C3D60D84E11303F54A7DABAACB567', '2');
    INSERT INTO "MEDIVH"."admin" VALUES ('W', 'O', '11');
    INSERT INTO "MEDIVH"."admin" VALUES ('zhangsan', 'wow', '3');
    INSERT INTO "MEDIVH"."admin" VALUES ('MEDIVH', '834C3D60D84E11303F54A7DABAACB567', '1');
    INSERT INTO "MEDIVH"."admin" VALUES ('2', '2', '2');</span>

        
    1)无返回值的存储过程(多用于插入)
    <span style="font-size:14px;">CREATE OR REPLACE
    PROCEDURE "TEST_PROP" AS
    BEGIN
        INSERT INTO "admin" VALUES ('W','O',2);
      COMMIT;
    END; </span>


    2)返回单个数据值的存储结构
    <span style="font-size:14px;">CREATE OR REPLACE
    PROCEDURE "FIRST_PROC"(TEMP_USERNAME IN VARCHAR2,TEMP_ID OUT NUMBER)
      IS NUM NUMBER;
    BEGIN
        SELECT MEDIVH."admin"."id" ID INTO NUM FROM MEDIVH."admin"
                        WHERE MEDIVH."admin"."username" = TEMP_USERNAME;
        TEMP_ID := NUM;
    END;</span>


    运行此过程会弹出输入框,输入数据库中已有数据的相关字段即可出现结果。
    3)多组返回结果
    首先创建自己的一个包,用来定义返回类型集,
    在其他中选择包,新建包:
    <span style="font-size:14px;">CREATE OR REPLACE
    PACKAGE MY_PACKAGE AS
    TYPE MY_CURSOR IS REF CURSOR;
    END;</span>


    --------------------------------------
    JAVA中调用,
    使用CallableStatement对象。
    CallableStatement 对象为所有的DBMS 提供了一种以标准形式调用已储存过程的方法。
    示例:
    <span style="font-size:14px;">  CallableStatement proc=null;
      proc=connection.prepareCall("{call first_proc(?,?)}");//connection = DriverManager.getConnection(oracleUrlToConnect,"xxxx", "xxxx");
      proc.setString(1, "medivh");
      proc.registerOutParameter(2, Types.NUMERIC);
    </span>


  • 相关阅读:
    HTML <a> 标签的 target 属性
    CSS display 属性
    test
    ubuntu开启ssh服务
    Ubuntu各个版本的介绍
    Ubuntu和RedHat的区别
    黑苹果Mac系统快捷键修改
    安装Ubuntu 8.04 Server
    VirtualBox虚拟机网络设置(转)
    修改eclipse的背景色(转载)
  • 原文地址:https://www.cnblogs.com/MedivhQ/p/3868764.html
Copyright © 2011-2022 走看看