`
anna_zr
  • 浏览: 200471 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle中insert into select和select into的用法(异常0RA-00905:missing keyword的解决)

 
阅读更多
两张表进行数据的拷贝,最常用的拷贝语句是:

insert into select  和 select into from

但是请绝对的注意:

在Oracle中select into from不可以使用-----原因很简单:select into是PL/SQL language 的赋值语句!如果使用则Oracle会抛出0RA-00905:missing keyword的异常!

但是可以用create table select代替该功能!!!具体参考下面测试代码!

但是在Sql Server中可以正常使用。

先做个小测试:

-- 建表
create table test1(
id number primary key,
testname varchar2(20),
createtime date,
falg varchar2(10)
);

create table test2(
id number primary key,
testname varchar2(20),
createtime date,
falg varchar2(10)
);

-- 插入测试数据
insert into test1 values(1,'测试数据1....1',sysdate-2,'N');
insert into test1 values(2,'测试数据1....2',sysdate-2,'N');
insert into test1 values(3,'测试数据1....3',sysdate-2,'N');
commit;
-- 使用insert into select 拷贝数据(注意红色部分,可以自动生成id序列值)
insert into test2(id,testname,createtime,falg)
   select seq_test.nextval,t1.testname,t1.createtime,t1.falg from test1 t1;
-- 使用 create table select 创建被拷贝数据(注意要删除test2表先)
create table test2 as select t1.id,t1.testname,t1.createtime,t1.falg from test1 t1;

-- select into from 不可以,抛异常
select t1.id,t1.testname,t1.createtime,t1.falg into test2(id,testname,createtime,falg)
   from test1 t1;

-- PL/SQL language 中select into赋值语句的测试使用
create or replace procedure test1_prod
is
  aa varchar2(100);
begin
  select t1.testname into aa from test1 t1 where id=1;
  dbms_output.put_line('t1.testname= '|| aa);
end;

总结:

数据拷贝,建议使用insert  into  select;

使用insert  into  select时如果对拷贝表生成id序列值,需要在select中以查询出的形式从sequence中查询出,再插入拷贝表;比如:

insert into test2(id,testname,createtime,falg)
   select seq_test.nextval,t1.testname,t1.createtime,t1.falg from test1 t1;

典型从test1表查询出数据插入test2表,test2要自动插入id,看上面代码,id要在select中先从sequence中查询出了!!


【转载】http://blog.sina.com.cn/s/blog_56d8ea9001011iqd.html
分享到:
评论

相关推荐

    ORACLE INSERT INTO SELECT *FROM 分批提交例子

    ORACLE INSERT INTO SELECT *FROM 分批提交例子

    Oracle 授权 ORA-00990: 权限缺失或无效

    在本篇文章中,我们将深入探讨这个问题的原因、解决方案以及如何正确地授权和管理Oracle数据库的权限。 1. **错误原因**: - 用户未被授予执行特定操作所需的系统权限,例如UPDATE、DELETE、SELECT或INSERT。 - ...

    如何处理错误ORA-29275:部分多字节字符

    通过以上方法,我们可以有效地解决ORA-29275错误,并提高Oracle数据库的整体稳定性和数据完整性。需要注意的是,在实际操作过程中,应当根据具体情况选择最适合的解决方案。例如,在某些情况下,调整字段长度可能是...

    select into和insert into select使用方法

    ### 使用Select Into与Insert Into Select进行表复制的方法 在数据库管理与操作中,`SELECT INTO`与`INSERT INTO SELECT FROM`是两种常见的用于复制或创建新表的方式。这两种语句虽然相似,但在实际使用场景中有着...

    oracle12c ORA-01017: 用户名/口令无效; 登录被拒绝 解决方案

    oracle12c程序连接时异常: ORA-01017: 用户名/口令无效; 登录被拒绝 的解决方案。

    Oracle中的select into

    Oracle中没有select into的用法! 在某些数据库中有select into的用法,用法是: select valueA,valueB into tableB from tableA; 上面这句语句的意思是将tableA表中的valueA和valueB字段的值和结构添加到tableB中,...

    CLOB 字段类型报错 ORA-01704: 文字字符串过长的解决

    在Oracle数据库中,CLOB(Character Large Object)字段类型用于存储大量的文本数据,如XML文档、长篇文章或者大量字符数据。然而,当你尝试向CLOB字段插入数据时,如果超过了Oracle规定的最大限制,就会遇到“ORA-...

    oracle常见错误号

    4. ORA-00928:missing SELECT keyword - 编写SQL语句时忘记添加`SELECT`关键字,导致语法错误。确保每个查询语句都以`SELECT`开始。 5. ORA-00904:"OBJECTID": invalid identifier - 提供了一个不存在或格式不...

    Oracle 常见故障解决方法

    Oracle 常见故障解决方法 Oracle 是一种关系型数据库管理系统,广泛应用于各种行业和领域。然而,在使用 Oracle 过程中,...这些故障解决方法可以帮助用户快速解决 Oracle 中常见的问题,提高系统的稳定性和性能。

    IMP-00010:不是有效的导出文件,头部验证失败

    标题“IMP-00010:不是有效的导出文件,头部验证失败”涉及的是Oracle数据库导入(IMP)过程中遇到的一个常见错误。这个错误通常发生在尝试使用IMP工具从.dmp文件导入数据时,表明导入文件可能已损坏或不完整,导致...

    oracle常用命令及错误类型(error message)

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其强大的功能和复杂的操作吸引了众多专业人士学习和使用。本指南主要关注Oracle的一些常用命令以及常见的错误类型,旨在帮助初学者快速上手和解决问题。 一...

    insert和select结合实现”插入某字段在数据库中的最大值+1″的方法

    本文是mysql 数据库 问题一 将表一的数据导入表二...在表中插入数据时,某一字段取数据库中该字段的最大值,并+1,这个问题很多人都说用存储过程什么的解决,其实使用insert 和 select 结合就可以很好的解决这个问题啊

    oracle中用户连接问题.docx

    了解这些技巧,数据库管理员可以更好地监控和管理Oracle数据库中的用户连接,包括识别异常连接、跟踪资源使用情况以及在必要时断开连接。同时,通过记录客户端IP地址,可以进行更深入的性能分析和安全审计。

    SQLServer和Oracle常用函数对比

    在IT领域,数据库管理系统(DBMS)是至关重要的组成部分,用于存储、管理和检索数据。其中,Microsoft SQL Server和...此外,熟悉这些函数的使用方法也有助于优化查询性能,编写出更高效、更易维护的数据库应用程序。

    Oracle数据库学习日记

    - **复制数据**: 使用 `insert into select` 结构。 - 示例: `insert into new_employees (id, name) select id, name from employees;` ##### 5.5 Select 中使用列的别名 - **列别名**: 使用 `as` 关键字或直接...

    oracle手册

    ### Oracle 手册核心知识点概览 #### 1. Oracle函数 Oracle提供了丰富的内置函数,分为单行函数和多行函数两大类。 ##### 单行函数 - **字符函数** - LOWER:将输入字符串转化为小写。 - UPPER:将输入字符串...

    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解(SQL数据库和Oracle数据库的区别)

    总结起来,`SELECT INTO` 和 `INSERT INTO SELECT` 在不同数据库系统中有不同的用法和限制。在SQL Server中,`SELECT INTO` 创建新表,而在Oracle中,它用于将查询结果存储到变量。`INSERT INTO SELECT` 是一个通用...

    Oracle常用异常代码

    以上是关于Oracle数据库中常见的异常代码及其含义和解决方法的详细介绍。在开发过程中,了解这些异常对于提高程序的健壮性和可维护性非常重要。希望本文能帮助开发者更好地理解和处理Oracle中的异常情况。

    oracle10g常用命令数据库的备份和恢复

    - 示例:`INSERT INTO ABC(A, B) VALUES('ABC', 'XY');` - **删除数据**: - 示例:`delete from abc where a = 'abc'` - **更新数据**: - 示例:`update abc set b = 'yyy' where a = 'abc';` #### 七、聚合...

Global site tag (gtag.js) - Google Analytics