精华内容
下载资源
问答
  • 在ORACLE中 两个字符型字段相加

    千次阅读 2018-11-07 13:16:06
    在ORACLE中 两个字符型字段相加

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   

      SELECT   ZIDUAN1||ZIDUAN2   AS   ZIDUAN   FROM   TABLE(合并)  
       
      SELECT   ZIDUAN1||'AND'||ZIDUAN2   AS   ZIDUAN   FROM   TABLE

    Oracle的CONCAT()只允许两个参数;换言之,一次只能将两个字串串连起来。不过,在Oracle中,我们可以用'||'来一次串连多个字串。

               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • 大神们,随便给几个例子参照一下啊,oracle数据库存储过程带输入参数建表的语法和在oracle中调用语法
  • 引言: 在MyBatis中,希望在Oracle中插入数据之时,同时返回主键值,而非插入的条数...

    引言:  在MyBatis中,希望在Oracle中插入数据之时,同时返回主键值,而非插入的条数...

    环境:MyBatis 3.2 , Oracle, Spring 3.2

      SQL Snippet in XML Configuration:

    <insert id="insertSelective" parameterType="com.jxxx.p2pp.model.UUserInfo">
        <selectKey resultType="java.math.BigDecimal" order="BEFORE" keyProperty="id">
    	   SELECT U_USER_INFO_SEQ.Nextval as ID from DUAL
       </selectKey>
    	
        insert into U_USER_INFO
        <trim prefix="(" suffix=")" suffixOverrides="," >
          <if test="id != null" >
            ID,
          </if>
          <if test="userName != null" >
            USER_NAME,
          </if>
          <if test="realName != null" >
            REAL_NAME,
          </if>
        .....
    </insert>
    

    要点是这里使用了selectKey来定义返回新生成的PrimaryKey,这个情况仅仅适用于Oracle。

    需要注意的地方是在Java代码中使用Integer类型,但是在MyBatis的映射文件中,使用java.math.BigDecimal类型,否则会报类型转换或者不匹配的错误。

    其他比如MySQL或者SQLServer的情况适用于以下情况:

        <insert id="insert" parameterType="Spares"   
                useGeneratedKeys="true" keyProperty="id">  
                insert into spares(spares_id,spares_name,  
                    spares_type_id,spares_spec)  
                values(#{id},#{name},#{typeId},#{spec})  
            </insert>  
    使用useGeneratedKeys/KeyProperty来实现插入数据的时候,来完成新生成主键的返回。


    其中异常信息的解决:

    异常信息:

       org.springframework.jdbc.UncategorizedSQLException: Error getting generated key or setting result to parameter object. Cause: java.sql.SQLException: 无效的列类型: getBigDecimal not implemented for class oracle.jdbc.driver.T4CRowidAccessor
    ; uncategorized SQLException for SQL []; SQL state [99999]; error code [17004]; 无效的列类型: getBigDecimal not implemented for class oracle.jdbc.driver.T4CRowidAccessor; nested exception is java.sql.SQLException:
    无效的列类型: getBigDecimal not implemented for class oracle.jdbc.driver.T4CRowidAccessor


    问题解决:

        问题是在Java代码中设置返回的主键数据类型,其中返回的数据类型为java.lang.Integer,而非BigDecimal和Long. 但是在MyBatis中的映射文件中的类型为java.math.BigDecimal.



    展开全文
  • Sequence在Oracle中的使用

    千次阅读 热门讨论 2017-02-07 13:38:49
    sequence也可以mysql中使用,但是有些差别,日后再补充,先把oracle中sequence的基本使用总结一下,方便日后查阅。 1、创建sequence: create sequence SEQ_ON_USER minvalue 1 maxvalue ...

            Oracle中,当需要建立一个自增字段时,需要用到sequence。sequence也可以在mysql中使用,但是有些差别,日后再补充,先把oracle中sequence的基本使用总结一下,方便日后查阅。

    1、创建sequence

    create sequence SEQ_ON_USER
    minvalue 1
    maxvalue 999999999999999999999999999
    start with 1
    increment by 1
    nocache;  

    说明:

     minvalue:序列最小值

     maxvalue/nomaxvalue:序列最大值/没有最大值

     start with 1:序列从1开始

     increment by 1:每次增加1

     cache/nocache:nocache不缓存。cache缓存。开启缓存,效率高,只是如果数据库宕机了,缓存丢失,会出现序列跳号情况。


    2、查看已有sequence

    select * from user_sequences;

    3、删除指定sequence

    DROP SEQUENCE SEQ_ON_USER;

    4、查看指定sequence的当前值:

    两种方式:

    select last_number from user_sequences wheresequence_name='SEQ_ON_USER';

    select SEQ_ON_USER.nextval from sys.dual;

            5、创建触发器使用sequence设置主键自动插入。

    create or replace trigger "SEQ_ON_USER_GENERATOR" before
      insert on databasename1.T_USER for each row
      declare
             mid number,
      begin
        select SEQ_ON_USER.nextval into mid from dual;
        :new.id:=mid;
       end
    
    create trigger SEQ_ON_USER_Trigger 
    
    before insert on T_USER for each row 
    begin 
    select SEQ_ON_USER.nextval into :new.id from dual; 
    end SEQ_ON_USER_Trigger; 

            6、代码中使用sequence.nextval插入主键值。

    【小结】

            菜鸟一枚,还需多多积累。

    展开全文
  • HIS的数据库为Oracle, 因此需要在Oracle中在原有用户的基础上,再增加一个用户,该用户仅能查看HIS中为其开放的视图。这也是为了系统之间的安全考虑的。2. 解决方案经过技术查阅,找到的解决方案如下:(1)以system...

    本文由Markdown语法编辑器编辑完成。

    1. 需求提出

    在HIS与第三方系统进行集成时,某第三方系统需要访问HIS数据库的视图而非全部的数据库表。

    HIS的数据库为Oracle, 因此需要在Oracle中在原有用户的基础上,再增加一个用户,该用户仅能查看HIS中为其开放的视图。这也是为了系统之间的安全考虑的。

    2. 解决方案

    经过技术查阅,找到的解决方案如下:

    (1)以system用户登录oracle数据库.
    (2)创建用户并且为用户赋予查看视图的权限.
    这里假设要创建一个tester用户,登录密码为:“123456”.
    HIS需要开放的视图是在原来用户 outpatient下的,视图名称为:v_daily_charge.
    此时,应该撰写的SQL为:

    --01: 创建tester用户,并且初始密码为123456.
    create user tester identified by "123456";
    
    --02: 赋予该用户登录数据库的权限.
    grant create session to tester;
    
    --03: 赋予该用户查看outpatient下的视图v_daily_charge的权限.
    grant select on outpatient.v_daily_charge to tester;

    注意:在运行以上第三条SQL的时候,oracle数据库有可能会报错。
    “ORA-01720: 不存在对 emergency.t_cost表的授权选项。”

    经过研究,出错的原因应该是,tester用户要访问outpatient用户的视图,该视图不仅会查阅outpatient用户下的某些表,如t_user, t_dept表,而且还访问了其他用户的表,如emergency用户下的t_cost表。

    为了避免以上的错误,就需要在为tester用户赋予查看outpatient的视图权限前,先将outpatient视图中需要访问到的emergency用户下的表的权限开放给outpatient用户。

    因此,在第三句SQL前还需要补充几句:

    --04: 由于在outpatient用户下的视图需要访问另一个用户emergency下的表,因此需要将emergency用户下的表t_cost先授权给outpatient和tester这两个用户.
    
    grant select on emergency.t_cost to outpatient with grant option;

    如果除了赋予tester用户, 查看outpatient下视图的权限外,还想再赋予tester用户查看outpatient用户下表t_user, t_dept表的权限,则需要增加以下的SQL:

    --赋予tester用户查看outpatient用户下的t_user和t_dept表的权限.
    
    grant select on outpatient.t_user to tester;
    grant select on outpatient.t_dept to tester;

    3. 参考链接:

    1. oracle建立视图,创建用户并授予查询权限
      http://www.cnblogs.com/king1302217/p/4543543.html
    2. ORA-01720: 不存在“*.*“授权选项
      http://blog.csdn.net/xyy511/article/details/41546209
    展开全文
  • 在oracle中要谨慎使用when others then

    千次阅读 2013-06-27 10:03:10
    在oracle中一般不要使用when others then,否则会掩盖软件的错误提示。 如果只是判断查不到数据时的处理,应该用when no_datafound then 待续...
  • 在Oracle中查询Date类型字段的数据 select * from [表名] where to_char([需要查询的字段],'yyyyMMdd') between '20130601' and '20130630'
  • 如何在Oracle中查看表的索引

    千次阅读 2018-12-28 15:26:45
    但是oracle中不适用。 oracle中表的索引信息存在 user_indexes 和 user_ind_columns 两张表里面, 其中, user_indexes 系统视图存放是索引的名称以及该索引是否是唯一索引等信息, user_ind_columns 统视图存放的...
  • Oracle 根据经纬度计算两地之间的距离 获得弧度的函数: CREATE OR REPLACE FUNCTION Radian(d number) RETURN NUMBER is PI number :=3.141592625; begin return d* PI/180.0; end ; ...
  • 在Oracle中索引的使用

    万次阅读 2016-04-22 23:44:53
    一旦建立了索引,用户表建立、更改和删除数据库时, Oracle就自动地维护索引。创建索引时,下列准则将帮助用户做出决定:  1) 索引应该SQL语句的"where"或"and"部分涉及的表列(也称谓词
  • Oracle 如何确定远程 session 客户端的 IP 地址

    千次阅读 多人点赞 2013-03-21 22:04:48
    Oracle 如何确定远程 session 客户端的 IP 地址 前几天,Daniel 所在的环境多个数据库发生了一件惨案:我们把所有数据库主机、数据库的密码更改后, 硬件总集成的一台 windows 主机安装了一个 Oracle...
  • 在oracle中,用union合并blob类型

    千次阅读 2011-08-03 17:16:32
    在oracle中,如果你想用union去合并不同表中的blob类型的列,如下: create or replace view skar_all (indnr,text,datei_blob) as  select skim_indnr, skim_text, blob1 fr
  • 在Oracle中使用字符串数组参数

    千次阅读 2008-12-09 10:37:00
    今天在项目中需要使用一个字符串数组参数,其实本来打算在cs文件中拼接字符串的,不过leader说可以在Oracle中使用数组参数,所以就看看了…… 其具体过程如下: 1、需要的类的命名空间: A、Oracle.DataAccess....
  • 在oracle中,怎么新建一个字符集是utf8的数据库(即数据库实例)
  • 在Oracle中跟踪后台所执行的SQL语句

    万次阅读 2010-12-13 09:55:00
    在oracle中可以跟踪后台所执行的sql,具体有以下两种设置方法: 在实际排查问题的过程中,尤其是在前端应用已经报出ORA错误的时候用此方法非常奏效,在前几章排查问题的过程中我也多次使用了该方法。以下是设置跟踪的...
  • sqlplus /nolog,conn /as sysdba 之所以能够登录,在于...2 oracle在登录时,有三种身份认证方式:操作系统身份认证、密码文件认证、数据库认证。而conn /as sysdba是属于操作系统认证。 为什么这样说呢?你当前...
  • 使用jdbc查询数据的话,打印sqlplsql执行没问题,看赋值问题,赋值的字段是否写进了sql语句,比如 select name from a 赋值的时候写的是rs.getString("name"); rs.getString("age"); sql里面没有查询age...
  • 在ORACLE中,两个字符型字段相加

    万次阅读 2011-06-19 12:47:00
    SELECT ZIDUAN1||ZIDUAN2 AS ZIDUAN FROM TABLE(合并) SELECT ZIDUAN1||AND||ZIDUAN2 AS ZIDUAN FROM TABLEOracle的CONCAT()只允许两个参数;换言之,一次只能将两个...不过,在Oracle中,我们可以用||来一
  • 如何在ORACLE中创建表时添加注释

    千次阅读 2019-03-29 15:11:48
    转载自 oracle中创建表时添加注释 https://www.cnblogs.com/xujiating/p/6236592.html 创建新表MESSAGES CREATE TABLE MESSAGES( MESSAGE_ID NUMBER(6) PRIMARY KEY, SEND_USER VARCHAR2(200), RECEIVE_USER VARCHAR...
  • 在oracle中如何查询前几条记录

    千次阅读 2007-03-22 19:01:00
    sql server 2000 中查询前N条记录的方法是:select top n from table,把这条语句使用在oracle中就出错,原来在oracle中可以这样查询达到这个效果:select * from table where rownum想一下子从sql server转
  • 2009-04-03在oracle中创建unique唯一约束(单列和多列) 关键字: oracle 联合唯一约束 oracle中的unique约束是用来保证表中的某一类,或者表中的某一类组合起来不重复的一种手段。我们在可以在创建表时或者创建好后...
  • 首先我们需要建立一个表为tb_1,里面添加一个(或多个)字段。...借助Oracle中的dual表 select * from tb_1,(select level from dual connect by level &amp;amp;amp;amp;lt;= 500000); ...
  • 在Oracle中查看客户端连接的IP信息 .

    千次阅读 2018-08-07 11:34:07
    前言 oracle 12c ...大家都知道v$session 记录着客户端的机器名称,但是没有IP , 如果记录clinet ip 呢? con sys/sys as dba 利用triger 这里不介绍. 利用 DBMS_SESSION 过程包. BEGIN DBMS_SE...
  • 在Oracle中执行动态SQL的几种方法

    万次阅读 2009-03-16 21:49:00
    在Oracle中执行动态SQL的几种方法在一般的sql操作中,sql语句基本上都是固定的,如:SELECT t.empno,t.ename FROM scott.emp t WHERE t.deptno = 20;但有的时候,从应用的需要或程序的编写出发,都可能需要用到动态...
  • 在oracle中实现DateDiff函数的功能

    万次阅读 2017-08-09 13:54:43
    orcale是没有DateDiff函数的功能的,想要实现时间比对功能可以这么写: 1.利用日期间的加减运算 天: ROUND(TO_NUMBER(END_DATE - START_DATE)) 小时: ROUND(TO_NUMBER(END_DATE - START_DATE) * 24) ...
  • MyBatis在Oracle中插入数据的返回值

    千次阅读 2017-03-31 15:30:26
    使用MyBatis做持久层时,insert和update语句默认返回影响行数。可从MyBatis源码得到证实,如下。 public int update(Statement statement) throws SQLException { PreparedStatement ps = (PreparedStatement) ...
  • select * from taccount t where regexp_like(t.vc_code, '[a-zA-Z]'); 
  • 如何在Oracle中导入dmp文件

    万次阅读 2010-08-09 11:11:00
    Oracle数据导入导出imp/exp就相当... <br />执行环境:可以在SQLPLUS.EXE或者DOS(命令行)执行, DOS可以执行时由于 在oracle 8i  安装目录/ora81/BIN被设置为全局路径, 该目录下有EX
  • 我们以插入某条数据时需要更新其中一个字段的值为例,即sql语句执行insert操作,触发器进行update操作。 解决方案 这个问题说来也简单,首先需要明白oracle触发器的before与after的区别。 详细的了解可以...
  • ===============================================在oracle中字段类型LONG的使用注意事项 ----------------------------------------LONG数据类型使用上的一些说明 系统环境: 1、操作系统:Windows 20002、数据库:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 146,776
精华内容 58,710
关键字:

在oracle中