`
springking
  • 浏览: 131815 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

访问oracle之二,操作数据

阅读更多

在plsql块中不仅可以嵌入select语句,还可以嵌入DML语句。

插入数据
 插入数据同样使用insert语句,只不过在提供数据时可以使用plsql变量,既可以使用values子句,
 也可以使用子查询。
例如:
 /*使用value子句插入数据*/
declare
  v_name emp.ename%type;
  v_sal emp.sal%type;
begin
  v_name := '&name';
  v_sal := &sal;
  insert into emp(ename,sal) values(v_name,v_sal);
  dbms_output.put_line('插入了'||v_name||'工资是'||v_sal);
end;

 /*使用子查插入数据*/
declare
  v_sal emp.sal%type := 4000;
begin
  insert into emp2(ename,sal)
  select ename,sal from emp where sal = v_sal; 
end;

更新数据
 更新数据同样使用update语句,只不过可以使用plsql变量。
例如:
 /*使用表达式更新列值*/
declare
  v_empno emp.empno%type := 6044;
  v_name emp.ename%type;
  v_sal emp.sal%type := 5500.23;
begin
  select ename into v_name from emp where empno=v_empno;
  update emp set ename=v_name,sal=v_sal where empno=v_empno;
  dbms_output.put_line('更新了姓名'||v_name);
  dbms_output.put_line('更新了工资'||v_sal);
end;

/*使用子查询更新数据*/
declare
  v_name emp.ename%type := 'bbb';
  v_sal emp.sal%type := 2000.57;
begin
  update emp set sal=(select sal from emp where ename=v_name)
  where job in(select job from emp where sal=v_sal);
end;

删除数据
 同样使用delete语句来删除数据。
例如:
 /*使用变量删除数据*/
declare
  v_name emp.ename%type:='ddd';
  v_job emp.job%type:='工人';
begin
  delete from emp where ename=v_name and job=v_job;
end;

 /*使用子查询来删除数据*/
declare
  --v_name emp.ename%type:='ddd';
  v_sal emp.sal%type:=2000;
begin
  delete from emp where job in(select job from emp where sal=v_sal);
end;

游标
 当执行select,update,insert,delete时,oracle server会为这些sql语句分配相应的上下文区,
 并且oracle使用上下文区解析并执行相应的sql语句,而游标是指向上下文区的指针。

 游标分为隐式游标和显示游标2种,隐式游标又叫sql游标,专门用于处理select into,insert ,update,
 delete语句。显示游标用于处理多行的select语句。

 隐式游标的属性:
  SQL%ISOPEN,当select into,insert ,update,delete语句执行时,oracle会隐含的打开游标,处理结  束后隐含的关闭,所以对开发人员来说,该属性永远为false;
  
  SQL%FOUND,该属性用于判断sql语句的执行是否有作用行,有作用行代表执行成功,该属性的值  为true,没有作用行代表执行失败,该属性的值为false.
  例如:
declare
  v_sal emp.sal%type:=3000;
begin
  update emp set sal=v_sal where emp.empno=&no;
  if sql%found then
     dbms_output.put_line('有作用行,执行成功');
  else
     dbms_output.put_line('没有作用行,执行失败');
  end if;
end;

  SQL%NOTFOUND,该属性用于判断sql语句的执行是否有作用行,没有作用行代表执行成功,该属  性的值为true,有作用行代表执行失败,该属性的值为false.和SQL%FOUND属性的取值正好相反
  例如:
declare
  v_sal emp.sal%type:=3000;
begin
  update emp set sal=v_sal where emp.empno=&no;
  if sql%notfound then
     dbms_output.put_line('没有作用行');
  else
     dbms_output.put_line('有作用行');
  end if;
end;

  SQL%ROWCOUNT,该属性返回sql语句的作用行总数。
  例如:
declare
  v_sal emp.sal%type:=3000;
begin
  update emp set sal=v_sal where emp.empno=&no;
  dbms_output.put_line('修改了'||sql%rowcount||'行');
end;

 

分享到:
评论

相关推荐

    sqlserver中访问ORACLE返回1行数据

    ### SQL Server 中访问 Oracle 返回 1 行数据 #### 问题背景 在企业级应用环境中,经常需要在不同的数据库系统之间进行数据交换或共享。其中一种常见的情形是从 SQL Server 数据库环境中查询 Oracle 数据库的数据...

    通过MSQL通过视图访问ORACLE中的表

    标题“通过MySQL通过视图访问ORACLE中的表”意味着我们将探讨如何利用MySQL的视图功能,来间接访问和操作Oracle数据库中的数据。视图是一种虚拟表,它不实际存储数据,而是根据用户定义的SQL查询动态生成结果集。这...

    用MapX 访问Oracle 中的空间数据

    #### 二、使用VC++ 和 MapX 访问Oracle中的空间数据 为了开发带有地图功能的应用程序,可以采用Visual C++ 和 MapX。MapX是一个强大的地图控件,可以嵌入到各种应用程序中,提供丰富的地图功能。 - **开发环境**:...

    【数据安全】Oracle 透明数据加密(TDE) 完整操作手册

    Oracle 透明数据加密(TDE)是Oracle数据库提供的一种安全特性,用于保护敏感数据免受未经授权的访问。TDE能够对存储在特定列或整个表空间中的数据进行加密,确保即使数据文件被盗,数据仍保持安全。以下是关于TDE的...

    VB下利用ADO技术访问Oracle数据库

    ### VB下利用ADO技术访问Oracle数据库 #### 一、引言 随着信息技术的发展,数据库管理系统在各个领域得到了广泛的应用。Microsoft Visual Basic (VB)作为一款流行的编程语言,因其易用性和强大的功能,常被用于...

    C#版Oracle数据库通用操作类

    ### C# 版 Oracle 数据库通用操作类解析 在现代软件开发中,数据库操作是必不可少的一部分,而 C# 结合 Oracle 数据库的应用尤为广泛。本文将深入探讨一个用于简化 Oracle 数据库操作的 C# 类——`ConnForOracle`。...

    Hadoop数据迁移--从Oracle向Hadoop

    在这个过程中,MapReduce作为一种编程模型,用于处理和生成大数据集,被用来连接Hadoop与Oracle数据库,使得Hadoop能够直接访问Oracle数据。 在进行Hadoop与Oracle之间的数据迁移时,需要定义数据库信息类DBInfo,...

    oracle 导出数据字典的小工具

    Oracle 数据字典是数据库管理系统中的一个重要组成部分,它存储着关于Oracle数据库结构、权限、对象以及系统设置等元数据。在数据库管理和开发过程中,了解和掌握数据字典对于优化查询、故障排查以及数据库设计都至...

    Oracle EBS 操作手册

    7. **安全性与权限管理**:Oracle EBS支持精细的权限控制,通过职责分配,确保用户只能访问其工作所需的特定功能和数据,保障企业信息的安全性。 8. **用户体验**:R12版本引入了改进的用户界面和用户体验设计,如...

    Oracle数据字典

    用户在对数据库中的数据进行操作时遇到问题,可通过访问数据字典来获取帮助。Oracle中数据字典分为静态和动态两类。静态数据字典主要记录的是不随数据库运行变化的信息,如用户、表、索引、列、触发器、约束和权限的...

    VB访问Oracle远程数据库方法与实现.pdf

    使用 VB 访问 Oracle 远程数据库的优点包括可以快速访问 Oracle 数据库、可以使用 VB 语言对 Oracle 数据库进行控制和操作等。使用 VB 访问 Oracle 远程数据库的缺点包括需要安装 Oracle 客户端软件、需要配置 ODBC ...

    Oracle10g 数据仓库

    1. **并行执行(Parallel Execution)**:Oracle10g引入了增强的并行执行功能,允许大型数据操作(如导入、导出、查询和DML操作)通过多个处理器或服务器同时处理,显著提高处理速度。 2. **自动工作负载管理...

    C#使用Oracle.ManagedDataAccess.dll轻松访问oracle数据库

    Oracle.ManagedDataAccess.dll是Oracle公司为.NET Framework提供的一款托管数据访问组件,它允许开发者无需安装Oracle客户端即可直接在C#应用中访问Oracle数据库。这个组件完全由.NET Framework管理,因此消除了对...

    Oracle数据库访问类

    Oracle数据库访问类是.NET开发中用于与Oracle数据库交互的重要组件,它允许开发者通过代码执行SQL语句、管理数据以及执行各种数据库操作。在.NET平台上,我们可以利用多种方式来实现Oracle数据库的访问,如使用ADO...

    C#访问oracle数据库类,带blob字段读写

    本篇文章将深入探讨如何使用C#语言访问Oracle数据库,并重点讲解处理Blob(Binary Large Object)字段的读写操作。 首先,让我们理解C#访问Oracle数据库的基本原理。Oracle数据库提供了一个名为ODP.NET(Oracle ...

    SqlServer与Oracle保存与读取图片二进制流

    4. **跨数据库操作**:在SQL Server和Oracle之间迁移或共享图片数据时,可能需要使用数据迁移工具或编程接口,如ODBC或JDBC,将二进制流从一个数据库复制到另一个。 5. **性能考虑**: - **存储效率**:存储二进制...

    VC 操作oracle数据的例子程序

    1. **安装必要的库和驱动**:Oracle提供了一个名为ODBC(Open Database Connectivity)的数据源接口,使得各种编程语言能通过标准接口访问数据库。在VC中,我们需要安装Oracle的客户端软件,包括Oracle ODBC驱动,...

    Oracle数据操作和控制语言详解.rar

    Oracle数据操作和控制语言(Data Manipulation Language, DML)是Oracle数据库系统中用于处理数据的核心部分,包括插入、更新、删除以及查询等操作。在深入理解Oracle DML之前,我们首先需要对Oracle数据库有一个...

    通过ORACLE通用连接访问SQLServer数据库的方法

    通过Oracle通用连接访问SQL Server数据库...通过以上步骤,我们可以成功地在Oracle环境中建立与SQL Server数据库之间的连接,实现跨数据库的数据访问和操作。这对于需要整合多个不同数据库系统的应用场景来说尤为重要。

Global site tag (gtag.js) - Google Analytics