rabbitmq_rabbitmq面试题 - CSDN
rabbitmq 订阅
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。 展开全文
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
信息
开发公司
Rabbit
简    称
MQ
构    成
以高性能、健壮以及可伸缩性出名的 Erlang 写成
释    义
一种程序对程序的通信方法
中文名
消息队列
外文名
Message Queue
rabbitmq简介
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而群集和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
收起全文
精华内容
参与话题
  • 第一步:创建一个对象类型 create or replace type STUDENT as object( id number(4), name varchar2(50), age number(3) ); / ...第二步:创建一个数组类型 (任意选择下面的一句执行) ...create ...

    第一步:创建一个对象类型

     create or replace type STUDENT as object(
        id        number(4),
        name    varchar2(50),
        age        number(3)
     );
    /

     

    第二步:创建一个数组类型 (任意选择下面的一句执行)

    -- 方式1:用table来盛放对象
    create or replace type STU_LIST as table of STUDENT;
    /
    
    -- 方式2:用数组来盛放对象,同时可指定数组的大小[用as varray(100)也是可以滴]
    create or replace type STU_LIST as array(100) of STUDENT;
    /

     

    第三步:创建一个过程引用集合类型的参数

    create or replace procedure test_in_list(
    -- 参数区域
        studentlist in STU_LIST,
        message out varchar2
    )
    is
    -- 变量区域
    begin
    -- 执行区域
        for i in 1 .. studentlist.count loop
            message:=message||'{id:'||studentlist(i).id||', name:'||studentlist(i).name||', age'||studentlist(i).age||'},';
        end loop;
    end test_in_list;
    /

     

    第四步:java调用存储过程

    import java.sql.CallableStatement;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    
    import oracle.sql.ARRAY;
    import oracle.sql.ArrayDescriptor;
    import oracle.sql.STRUCT;
    import oracle.sql.StructDescriptor;
    
    public class TestProInList {
    
        // 测试main
        public static void main(String[] args) {
            new TestProInList().testProInList();
        }
    
        // 调用存储过程并返回执行结果
        public void testProInList() {
            // 定义需要的变量
            Connection ct = null;
            CallableStatement cs = null;
            ResultSet rs = null;
    
            try {
                // 加载驱动
                Class.forName("oracle.jdbc.driver.OracleDriver");
    
                // 得到连接
                ct = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:myora1", "sccot", "tiger");
    
                // 创建CallableStatement接口
                cs = ct.prepareCall("{call TEST_IN_LIST(?,?)}");
    
                // 给in?赋值
                ArrayList<Student> list = new ArrayList<Student>() {
                    {
                        this.add(new Student(1, "ZhangSan", 23));
                        this.add(new Student(2, "LiSi", 22));
                        this.add(new Student(3, "WangWu", 21));
                    }
                };
                ARRAY array = getArray(ct, "STUDENT", "STU_LIST", list);// 该函数调用的第二三个参数就是上面自定义的两个类型,在此必须大写
                // 设置入参
                cs.setArray(1, array);
                // 注册出参
                cs.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR);
    
                // 执行
                cs.execute();
    
                // 获取返回结果
                String message = cs.getString(2);
                System.out.println(message);
                // 打印结果:
                // {id:1, name:ZhangSan, age23},{id:2, name:LiSi, age22},{id:3,
                // name:WangWu, age21},
    
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                // 关闭资源
                try {
                    if (cs != null) {
                        cs.close();
                    }
                    if (rs != null) {
                        rs.close();
                    }
                    if (ct != null) {
                        ct.close();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                cs = null;
                rs = null;
                ct = null;
            }
        }
    
        private ARRAY getArray(Connection con, String OraObjType, String OraArrType, ArrayList<Student> stuList)
                throws Exception {
            ARRAY list = null;
            if (stuList != null && stuList.size() > 0) {
                // Oracle识别的集合对象,匹配java对象集合
                STRUCT[] structs = new STRUCT[stuList.size()];
    
                // Oracle识别的对象模板,匹配单个java对象
                StructDescriptor structdesc = new StructDescriptor(OraObjType, con);
    
                // 遍历stuList,将每个Student对象转换为Oracle可识别的模板对象
                for (int i = 0; i < stuList.size(); i++) {
                    // java对象
                    Student student = stuList.get(i);
    
                    // 数组大小应和你定义的数据库对象(STUDENT)的属性的个数
                    Object[] oneRow = new Object[3];
                    oneRow[0] = student.getId(); // 将Student对象的每个属性按顺序设置到oneRow数组中
                    oneRow[1] = student.getName();
                    oneRow[2] = student.getAge();
                    structs[i] = new STRUCT(structdesc, con, oneRow);
                }
    
                // 匹配list
                ArrayDescriptor desc = ArrayDescriptor.createDescriptor(OraArrType, con);
                list = new ARRAY(desc, con, structs);
            }
            return list;
        }
    }
    
    class Student {
        private int id;
        private String name;
        private int age;
    
        // 构造函数
        public Student(int id, String name, int age) {
            super();
            this.id = id;
            this.name = name;
            this.age = age;
        }
    
        // getters/setters(略)
    
    }

     

    集合元素为基本数据类型时的小例子

    sql部分:

    -- 创建数组对象
    create or replace type tables_array as varray(100) of varchar2(32);
    /
    
    -- 测试用存储过程
    create or replace procedure test_in_list(
    --参数区域
        objlist in tables_array,
        message out varchar2
    ) is
    --变量区域
    begin
    --执行区域
      for i in objlist.first .. objlist.last loop
        message:=message||objlist(i)||',';
      end loop;
      commit;
    end test_in_list;
    /

    java部分:

    import java.sql.CallableStatement;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    import java.util.List;
    
    import oracle.sql.ARRAY;
    import oracle.sql.ArrayDescriptor;
    
    public class TestProInList {
    
        // 调用测试用存储过程
        public static void main(String[] args) {
            // 定义需要的变量
            Connection ct = null;
            CallableStatement cs = null;
            ResultSet rs = null;
    
            try {
                // 加载驱动
                Class.forName("oracle.jdbc.driver.OracleDriver");
    
                // 得到连接
                ct = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:myora1", "sccot", "tiger");
    
                // 创建CallableStatement接口
                cs = ct.prepareCall("{call TEST_IN_LIST(?,?)}");
    
                // 给in?赋值
                ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("TABLES_ARRAY", ct);
                List<String> list = new ArrayList<String>() {
                    {
                        this.add("abc");
                        this.add("edf");
                        this.add("ghi");
                    }
                };
                ARRAY array = new ARRAY(descriptor, ct, list.toArray());
                // 设置入参
                cs.setArray(1, array);
                // 注册出参
                cs.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR);
    
                // 执行
                cs.execute();
    
                // 获取返回结果
                String message = cs.getString(2);
                System.out.println(message); //打印结果: abc,edf,ghi,
    
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                // 关闭资源
                try {
                    if (cs != null) {
                        cs.close();
                    }
                    if (rs != null) {
                        rs.close();
                    }
                    if (ct != null) {
                        ct.close();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                cs = null;
                rs = null;
                ct = null;
            }
        }
    }

     

    展开全文
  • Oracle函数——转换函数

    千次阅读 2018-05-21 18:56:02
    1、to_char()函数:将DATE或者NUMBER转换为字符串2、to_date()函数:将number、char转换为date3、to_number()函数:将char转换为number4、CAST(expr AS type_name)函数:用于将一个内置数据类型或集合类型转变为另一...

                  用于将一种数据类型转换为另一种数据类型。

    1、to_char()函数:将DATE或者NUMBER转换为字符串
    2、to_date()函数:将number、char转换为date

    3、to_number()函数:将char转换为number

    4、CAST(expr AS type_name)函数:用于将一个内置数据类型或集合类型转变为另一个内置数据类型或集合类型。expr为列名或值,type_name数据类型。
    SELECT CAST('123.4' AS int) from dual;
    结果:123
    可进行四舍五入操作:SELECT CAST('123.447654' AS decimal(5,2)) as result from dual;
    decimal(5,2)表示值总位数为5,精确到小数点后2位。
    结果:123.45

    5、TO_MULTI_BYTE(c1)函数:将字符串c1中的半角转化为全角。TO_MULTI_BYTE和TO_SINGLE_BYTE是相反的两个函数.
    select to_multi_byte('高A') text from dual; 
    结果:

    6、to_single_byte(c1)函数:将字符串c1中的全角转化为半角。
    select to_single_byte('高A') text from dual;

    结果:

    7、TIMESTAMP_TO_SCN(timestamp)函数:用于根据输入的timestamp返回所对应的scn值,其中timestamp用于指定日期时间。作为对于闪回操作(flashback)的一个增强,Oracle10g提供了函数对于SCN和时间戳进行相互转换。
    select timestamp_to_scn(sysdate) scn from dual;
    结果:9709105


    8、SCN_TO_TIMESTAMP(number)函数:根据输入的scn值返回对应的大概日期时间,其中number用于指定scn值.

    select to_char(scn_to_timestamp(9709105), 'yyyy-mm-dd hh24:mi:ss')from dual; 

    结果:2018-05-21 18:23:35

    9、CONVERT(string,dest_set[,source_set])函数:将字符串string从source_set所表示的字符集转换为由dest_set所表示的字符集.如果source_set没有被指定,它缺省的被设置为数据库的字符集.

    ZHS16GBK表示采用GBK编码格式、16位(两个字节)简体中文字符集 
    WE8ISO8859P1(西欧、8位、ISO标准8859P1编码)

    AL32UTF8(其中AL代表ALL,指适用于所有语言)、zhs16cgb231280

    select convert('中国','US7ASCII','WE8ISO8859P1') "conversion" from dual;
    结果:O??u
    10、TRANSLATE(str1 USING zfj)函数:将字符串转变为数据库字符集(char_cs)或民族字符集(nchar_cs)

    Select TRANSLATE(‘中国’ using nchar_cs) from dual;

    结果:中国

    11、ASCIISTR(s)函数:将任意字符集的字符串转变为数据库字符集的ASCII字符串。

    Select ASCIISTR ('1A_中文')  from dual;

    结果:1A_\4E2D\6587

    12、UNISTR(str1)函数:输入字符串返回相应的UNICODE字符

    Select UNISTR ('\4E2D'),UNISTR ('\6587'),UNISTR ('\0300'),UNISTR ('\00E0') from dual;

    结果:中 文 ` à

    13、COMPOSE(string)函数:这个函数以UNICODE字符串为参数,返回一个规范化的字符串。比如,它可以接受一个字母和一个组合标记,比如说‘a'(Unicode 字符0097)和沉音符(Unicode 字符0300),然后创建一个单独的由两个标记组合而成的字符(à)。

    Select COMPOSE('a'||unistr('\0300'))  from dual;

    结果:à

    14、DECOMPOSE(string)函数:返回一个Unicode字符串。它是string的规范分解。
    SELECT DECOMPOSE ('Châteaux') FROM DUAL; 
    结果:Cha^teaux

    15、CHARTOROWID(c1)函数:将字符数据类型CHAR或VARCHAR2转换为ROWID值.参数c1是长度为18的字符串,必须符合rowid格式.CHARTOROWID是ROWIDTOCHAR的反函数.
    在Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,rowid确定了每条记录是在Oracle中的哪一个数据文件、块、行上。在重复的记录中,可能所有列的内容都相同,但rowid不会相同.
    SELECT chartorowid('AAAADeAABAAAAZSAAA') FROM DUAL;
    结果:AAAADeAABAAAAZSAAA

    16、ROWIDTOCHAR(rowid)函数:转换rowid值为varchar2类型,rowid固定参数,返回长度为18的字符串。
    SELECT ROWIDTOCHAR(rowid) FROM DUAL;
    结果:AAAAB0AABAAAAOhAAA

    17、INTERVAL 'integer [- integer]' {YEAR | MONTH} [(precision)][TO {YEAR | MONTH}]函数:该数据类型常用来表示一段时间差, 注意时间差只精确到年和月. precision为年或月的精确域, 有效范围是0到9, 默认值为2.
    select INTERVAL '123-2' YEAR(3) TO MONTH from dual;
    表示: 123年2个月, "YEAR(3)" 表示年的精度为3, 可见"123"刚好为3为有效数值, 如果该处YEAR(n), n<3就会出错, 注意默认是2
    结果:+123-02

    18、HEXTORAW(string)函数:将string一个十六进制构成的字符串转换为二进制RAW数值.String中的每两个字符表示了结果RAW中的一个字节.HEXTORAW和RAWTOHEX为相反的两个函数.当出现比f大的字母时(以a最小z最大)就会报错
    select hextoraw('abcdef') from dual;
    结果:ABCDEF

    19、RAWTOHEX(rawvalue)函数:将raw串转换为十六进制. rawvalue中的每个字节都被转换为一个双字节的字符串.
    select rawtohex('AA') from dual;
    结果:4141 结果之所以是4141是因为A的ASCII为65,65转换为十六进制就是41。

    20、TO_LOB (long_column)函数:将LONG或LONG ROW列的数据转变为相应的LOB类型。但需要注意的是,TO_LOB一般只用在CREATE TABLE或INSERT TABLE语句后面的子查询中。在其他地方使用会报错,比如UPDATE语句。
    展开全文
  • 当需要把插入多条数据的行为合并为一个事务时,可以考虑把一个list型数据作为参数传入存储过程, 可以调用jdbc内部实现类来实现,这些类在classes12.zip(oracle 8,别的版本可能是其他名字的zip包)。 如: (一) ...

    当需要把插入多条数据的行为合并为一个事务时,可以考虑把一个list型数据作为参数传入存储过程, 可以调用jdbc内部实现类来实现,这些类在classes12.zip(oracle 8,别的版本可能是其他名字的zip包)。 如: (一)  需要将一个list传入存储过程。 具体操作如下: 1,建立数据库对象来映射list数据类型。 --定义一个与list中各元素的数据类型相同的数据库对象

    CREATE TYPE AOBJECT AS OBJECT(      

    aaaa          NUMBER(8),      

    bbbb         NUMBER(8)    

    )   

    / --定义一个list数据库对象 CREATE TYPE ALIST AS VARRAY(100) OF AOBJECT    /

      2,具体java代码如下:

    import java.sql.CallableStatement;  

    import java.sql.Connection;  

    import java.sql.PreparedStatement;  

    import java.util.ArrayList;
      /*    * 以下就是classes12.zip中的实现类 */

    import oracle.jdbc.driver.OracleCallableStatement;  

    import oracle.sql.ARRAY;  

    import oracle.sql.ArrayDescriptor;  

    import oracle.sql.STRUCT;  

    import oracle.sql.StructDescriptor;
      .......
    public static long addRecords(ArrayList list) {   

    Connection con = null;   

    CallableStatement stmt = null;   

    int backVal = 0;   

    try {    

    con = pool.getConnection();    

    if (con != null) {

    ARRAY aArray = getArray(con, "AOBJECT","ALIST", list);

    //该函数调用的第二三个参数必须大写

    stmt = con.prepareCall("{call produce1(?,?)}");

    //调用某个存储过程

    ((OracleCallableStatement) stmt).setARRAY(1, aArray);     

    stmt.registerOutParameter(2, java.sql.Types.INTEGER);     

    stmt.execute();     

    backVal = stmt.getInt(2);    

    }   

    } catch (Exception e) {    

    ....   

    } finally {    

    ....//释放数据库连接 } return backVal;  

    }

    private static ARRAY getArray(Connection con, String OracleObj,   

    String Oraclelist, ArrayList objlist) throws Exception {   

    ARRAY list = null;   

    if (objlist != null && objlist.size() > 0) {    

    StructDescriptor structdesc = new StructDescriptor(OracleObj, con);    

    STRUCT[] structs = new STRUCT[objlist.size()];    

    Object[] result = new Object[0];    

    for (int i = 0; i < objlist.size(); i++) {     

    result = new Object[2];

    //数组大小应和你定义的数据库对象(AOBJECT)的属性的个数

    result[0] = new Integer(..); 

    //将list中元素的数据传入result数组 result[1] = new Integer(..);  //
    structs[i] = new STRUCT(structdesc, con, result);    

    }    

    ArrayDescriptor desc = ArrayDescriptor.createDescriptor(Oraclelist,       con);     l

    ist = new ARRAY(desc, con, structs);    }

    // if   

    return list;  

    }

    // function

    (二) 当需要传入存储过程的参数的集合类型的数据时,这个集合容器中的元素可能不需要一个类似结构体的类型,具有多个元素。 而是一个基本类型的集合,可以采用oracle的数组的概念。 1,建立数据库对象来映射list数据类型。 --定义一个list数据库对象 CREATE TYPE ALIST AS VARRAY(100) OF  NUMBER(12, 2);    /  

    2,具体java代码如下:

    import java.sql.CallableStatement;  

    import java.sql.Connection;  

    import java.sql.PreparedStatement;  

    import java.util.ArrayList;
      /*    * 以下就是classes12.zip中的实现类 */

    import oracle.jdbc.driver.OracleCallableStatement;  

    import oracle.sql.ARRAY;  

    import oracle.sql.ArrayDescriptor;  

    import oracle.sql.STRUCT;  

    import oracle.sql.StructDescriptor;
      .......
    public static long addRecords(ArrayList list) {   

    Connection con = null;   

    CallableStatement stmt = null;   

    int backVal = 0;   

    try {    

    con = pool.getConnection();    

    if (con != null) {
    int elements[] = { 300, 400, 500, 600 };

    // line 59     

    ArrayDescriptor desc = ArrayDescriptor.createDescriptor("ALIST", conn);     

    ARRAY aArray = new ARRAY(desc, conn, elements);     

    stmt = con.prepareCall("{call produce1(?,?)}");

    //调用某个存储过程 ((OracleCallableStatement) stmt).setARRAY(1, aArray);     

    stmt.registerOutParameter(2, java.sql.Types.INTEGER);     

    stmt.execute();     

    backVal = stmt.getInt(2);    

    }   

    } catch (Exception e) {   

      ....   

    } finally {

        ....//释放数据库连接

    }

    return backVal;

    展开全文
  • Oracle函数实现数组然后循环

    千次阅读 2018-12-25 10:12:20
    1、先建立一个包,定义数组类型:   CREATE OR REPLACE PACKAGE pkg_string is  -- Purpose : 字符串处理  -- Public type declarations  TYPE StringArray IS VARRAY(2000) ...2、拆分字符串的通用函数,即...

    1、先建立一个包,定义数组类型:
     

    CREATE OR REPLACE PACKAGE pkg_string is
    
      -- Purpose : 字符串处理
    
      -- Public type declarations
      TYPE StringArray IS VARRAY(2000) OF VARCHAR2(2000);
    
    END pkg_string;

    2、拆分字符串的通用函数,即数组的函数:

    CREATE OR REPLACE FUNCTION fun_ParseToArray(
      a_SourceString  IN VARCHAR2,    --源字符串
      a_Delimiter     IN VARCHAR2     --拆分的分隔符
    ) RETURN pkg_string.StringArray IS
    -- ********************************************************
    -- 根据分隔符拆分字符串为数组
    -- ********************************************************
    v_Result      pkg_string.StringArray; --数组
    iCount        INTEGER;
    iBegin        INTEGER;
    sValue        VARCHAR2(2000);
    sSplitString  VARCHAR2(2000);
    BEGIN
        --检查参数
        IF a_SourceString IS NULL OR a_Delimiter IS NULL THEN
          RETURN(v_Result);
        END IF;
        IF a_SourceString = '' THEN
          RETURN(v_Result);
        END IF;
        --初始化数组
        v_Result := pkg_string.StringArray();
        --Only one entry was found
        IF instr(a_SourceString,a_Delimiter) = 0 THEN
          -- 数组加1维
          v_Result.extend();
          -- 将数据存入数组
          v_Result(1) := a_SourceString;
          RETURN(v_Result);
        END IF;
        iCount := 0;
        sSplitString := a_SourceString;
        LOOP
            iBegin := INSTR(sSplitString,a_Delimiter);
            EXIT WHEN iBegin < 1;
            sValue := Substr(sSplitString,1,iBegin - 1);
            sSplitString := SubStr(sSplitString,iBegin + 1);
            -- 计数器加1
           iCount := iCount + 1;
           -- 数组加1维
           v_Result.extend();
           -- 将数据存入数组
            v_Result(iCount) := sValue;
        END LOOP;
        --Set last entry
        sSplitString := SubStr(sSplitString, iBegin);
    
        --Update array and counter if necessary
        IF Length(sSplitString) > 0 THEN
         -- 计数器加1
          iCount := iCount + 1;
          -- 数组加1维
          v_Result.extend();
         -- 将数据存入数组
         v_Result(iCount) := sSplitString;
        END IF;
    
        RETURN(v_Result);
    EXCEPTION
       WHEN others THEN
           return v_Result ;
    END fun_ParseToArray;
    

    3、用法:

    CREATE OR REPLACE FUNCTION demo(--占比值
       
       field in VARCHAR
    )
      RETURN VARCHAR2
    IS
    
    v_sql VARCHAR2(4000) := '';
    v_number number;
    vs_row pkg_string.StringArray;
    
    BEGIN
          --求传入字段的分割之后的size,例子field=123,456
          SELECT LENGTHB(TRANSLATE(field,','||field,',')) into v_number FROM DUAL;
          v_number := v_number+1;
          --分割字符串组成数组
      vs_row := fun_ParseToArray(field,',');
      --循环数组
      for i in 1 .. v_number loop
        v_sql := v_sql || vs_row(i)||'ccc';
    
        end loop;
    
    
      if v_sql is not null then
         RETURN v_sql;
      else
         RETURN '【数值为空】';
      end if;
    
    EXCEPTION
       WHEN NO_DATA_FOUND THEN
          return ('你需要的数据不存在!');
       WHEN OTHERS THEN
         return '错误';
    END demo;
    

    参考:https://sangei.iteye.com/blog/1343837

    展开全文
  • Oracle中使用聚合函数

    千次阅读 2013-06-04 18:42:40
    聚合函数主要是数字处理函数,通常对分组后每组行中每行的列进行操作,返回数值,包括求平均值函数avg(x)、统计个数函数count(x)、求最大值函数max(x)、求最小值函数min(x)、求中间值函数median(x)、求和函数
  • select regexp_substr('abc,12d,wds,shllow','[^,]+', 1, level) from dual connect by level (regexp_replace('abc,12d,wds,shllow'||',','[^,]+',''))
  • ORACLE 函数与过程的差别2009-06-26 18:29--过程(PROCEDURE)--------------------------------------------------// --创建表 CREATE TABLE user_info ( id VARCHAR2(4), name VARCHAR2(15), pwd VARCHAR2(15), add
  • https://docs.oracle.com/cd/E18283_01/appdev.112/e17126/pipe_row_statement.htm PIPE ROW Statement The PIPE ROW statement, which can appear only in the body of a pipelined table function, returns a...
  • oracle over函数详解

    千次阅读 2016-12-12 10:00:54
    今天在javaeye上看到一道面试题,很多人都用over函数解决的  特意查了一下它的用法 SQL> select deptno,ename,sal  2 from emp  3 order by deptno; DEPTNO ENAME SAL ---------- ---------- ---------...
  • 刚学习oracle不久,今天遇到个问题,看似就一句话,但也折腾了我半天。 通过传入的参数,查询信息。 输入参数: prjid in varchar2(200); 函数体: select t.prjName from table1 t where t.prjid in (prjid)...
  • 引言在plsql开发中,会涉及到一些大数据量表的数据处理,如将某记录数超亿的表的记录经过处理转换...在实际项目中,管道函数会和表函数、数据流函数(即表函数和CURSOR结合)、数据集合、并行度一起使用,达到大数据处
  • 关键字: oracle 存储过程 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS 变量1 INTEGER :=0; 变量2 DATE; BEGIN END 存储过程名字 2....
  • oracle分析函数

    2017-08-31 21:02:00
    一、Oracle分析函数简介: 在日常的生产环境中,我们接触得比较多的是OLTP系统(即Online Transaction Process),这些系统的特点是具备实时要求,或者至少说对响应的时间多长有一定的要求;其次这些系统的业务逻辑...
  • oracle存储过程,集合对象处理

    千次阅读 2016-05-13 16:36:25
    我们在进行pl/sql编程时打交道最多的就是存储过程了...如:游标的处理,异常的处理,集合的选择等等 1.存储过程结构  1.1 第一个存储过程 Java代码  1.create or replace procedure proc1(  2. p_para1 varcha
  • 诉求:查询Oracle数据库N个表,将查询结果的一列转化为一条数据,需要函数WM_CONCAT: SELECT REPLACE(WM_CONCAT(E.CARD), ',', '|') FROM BB_USER_T E;
  • -- 19-1:建立无参数的函数 CREATE OR REPLACE FUNCTION cur_datetime RETURN VARCHAR2 IS BEGIN RETURN TO_CHAR(sysdate, 'YYYY"年"MM"月"DD"日"HH24″时"MI"分"SS"秒"...
1 2 3 4 5 ... 20
收藏数 11,601
精华内容 4,640
关键字:

rabbitmq