zoukankan      html  css  js  c++  java
  • oracle inside(3)

    3.1 对象的定义
    对象可以嵌套,而且嵌套级数不限。
    1. 例程:
    -- 创建对象头
    CREATE OR REPLACE TYPE test_obj IS OBJECT(
    m_Name VARCHAR2(30),
    m_id NUMBER,
    MEMBER PROCEDURE GetName(p_id IN NUMBER, p_name OUT VARCHAR2),
    MEMBER FUNCTION GetName(p_id NUMBER) RETURN VARCHAR2,
    MEMBER PROCEDURE SetName(p_id IN NUMBER, p_name IN VARCHAR2)
    );
    /
    -- 创建对象包体
    CREATE OR REPLACE TYPE BODY test_obj IS
    MEMBER PROCEDURE GetName(p_id IN NUMBER, p_name OUT VARCHAR2) IS
    BEGIN
    SELECT ename INTO p_name FROM emp WHERE empno = p_id;
    END;
    PL/SQL 高级编程
    第 12 页 共 12 页
    MEMBER FUNCTION GetName(p_id IN NUMBER) RETURN VARCHAR2 IS
    l_Name VARCHAR2(30);
    l_sql VARCHAR2(100);
    BEGIN
    -- 不能使用 m_Name 来代替 l_name
    l_sql := 'SELECT ename FROM emp WHERE empno = :1';
    EXECUTE IMMEDIATE l_sql INTO l_Name USING p_id;
    RETURN l_Name;
    END;
    MEMBER PROCEDURE SetName(p_id IN NUMBER, p_name IN VARCHAR2) IS
    l_sql VARCHAR2(100);
    BEGIN
    l_sql := 'UPDATE emp SET ename = :1 WHERE empno = :2';
    EXECUTE IMMEDIATE l_sql USING p_name, p_id;
    COMMIT;
    END;
    END;
    /
    -- 删除对象:
    DROP TYPE my_object;
    2. 调用上述例程,注意调用方法:
    DECLARE
    l_name VARCHAR2(30);
    mo1 test_obj;
    mo2 test_obj;
    BEGIN
    mo1 := test_obj('test', 10);
    mo2 := mo1;
    mo1.GetName(7369, l_name);
    DBMS_OUTPUT.PUT_LINE(l_name);
    l_name := mo2.GetName(7369);
    DBMS_OUTPUT.PUT_LINE(l_name);
    mo2.SetName(7369, 'yang');
    END;
    /
    3.2 对象的存贮和检索
    1. 存贮和检索对象:
    Oracle 的对象关系模型允许对象作为数据库表中的一个字段存贮。例如:
    CREATE TABLE yang_test(test test_obj);
    注意:在定义表之后,若想改变对象test_obj的内容,则必须首先删除表。
    要求:如何应用该字段?如何调用此字段中包含的函数和过程?
  • 相关阅读:
    Redis 配置连接池,redisTemplate 操作多个db数据库,切换多个db,解决JedisConnectionFactory的设置连接方法过时问题。(转)
    Spring Boot 中初始化资源的几种方式(转)
    关于RedisTemplate和StringRedisTemplate(转)
    @PostConstruct
    Python % 格式化字符串
    逻辑回归模型
    python 常用内置函数
    HIVE: collect_set(输出未包含在groupby的字段);
    HDFS文件和HIVE表的一些操作
    Linux 传输文件
  • 原文地址:https://www.cnblogs.com/Mayvar/p/wanghonghua_201108021108.html
Copyright © 2011-2022 走看看