/* *访问ORACLE */ --检索单行数据 --使用标量变量接收数据 DECLARE v_ename emp.ename%TYPE; v_sal emp.sal%TYPE; BEGIN select ename,sal into v_ename,v_sal from emp where empno=&no; dbms_output.put_line('雇员名:'||v_ename); dbms_output.put_line('雇员薪水:'||v_sal); END; --使用记录变量接收数据 DECLARE TYPE emp_record_type IS RECORD( ename emp.ename%TYPE,sal emp.sal%TYPE); emp_record emp_record_type; BEGIN select ename,sal INTO emp_record from emp where empno=&no; dbms_output.put_line('雇员名:'||emp_record.ename); dbms_output.put_line('雇员薪水:'||emp_record.sal); END; --操纵数据 --插入数据 --在PL/SQL块中使用VALUES子句插入数据 DECLARE v_deptno dept.deptno%TYPE; v_dname dept.dname%TYPE; BEGIN v_deptno:=&no; v_dname:='&name'; INSERT INTO dept(deptno,dname) values(v_deptno,v_dname); END; SELECT * FROM DEPT; --在PL/SQL块中使用子查询插入数据 DECLARE v_deptno emp.deptno%TYPE:=&no; BEGIN INSERT INTO employee select * from emp where deptno=v_deptno; end; select * from employee; select * from emp; --更新数据 --使用表达式更新列值 DECLARE v_deptno dept.deptno%TYPE:=&no; v_loc dept.loc%TYPE:='&loc'; BEGIN UPDATE dept set loc=v_loc where deptno=v_deptno; END; SELECT * FROM DEPT; --使用子查询更新列值 --将与SCOTT岗位相同的所有雇员的工资和补助更新为与SCOTT完全相同 DECLARE v_ename emp.ename%TYPE:='&name'; BEGIN UPDATE emp set(sal,comm) = (select sal,comm from emp where ename=v_ename) where job=(select job from emp where ename=v_ename); END; select * from dept; --删除数据 --使用变量删除数据 DECLARE v_deptno dept.deptno%TYPE:=&no; BEGIN DELETE FROM dept WHERE deptno=v_deptno; END; --使用子查询删除数据 --根据输入的雇员名解雇雇员所在部门的所有雇员 --下例会删除SCOTT所在部门的所有雇员 DECLARE v_ename emp.ename%TYPE:='&name'; BEGIN delete from emp where deptno=(select deptno from emp where ename=v_ename); END; SELECT * FROM EMP; --SQL游标 --SQL%ISOPEN:用于确定SQL游标是否已经打开。当在PL/SQL块中执行SELECT INTO,INSERT,UPDATE以及DELETE语句时,ORACLE会隐含地打开 --游标,并且在语句执行完成之后会隐含地关闭游标,所以对于开发人员来说该属性的值永远都是FALSE,并且在开发PL/SQL应用时不需要使用该游标属性 --SQL%FOUND:用于确定SQL语句执行是否成功。 --语句执行是否成功是根据是否有作用行来判断,当SQL语句有作用行时,其属性值为TRUE,当SQL语句没有作用行时,其属性值为FALSE DECLARE v_deptno emp.deptno%TYPE:=&no; BEGIN update emp set sal=sal*1.1 where deptno=v_deptno; if SQL%FOUND THEN DBMS_OUTPUT.put_line('语句执行成功'); else DBMS_OUTPUT.put_line('该部门不存在雇员'); end if; END; --SQL%NOTFOUND:用于确定SQL语句执行是否成功 --语句执行是否成功是根据是否有作用行来判断,当SQL语句有作用行时,其属性值为FALSE,当SQL语句没有作用行时,其属性值为TRUE DECLARE v_deptno emp.deptno%TYPE:=&no; BEGIN update emp set sal=sal*1.1 where deptno=v_deptno; if SQL%NOTFOUND THEN DBMS_OUTPUT.PUT_LINE('该部门不存在雇员'); else dbms_output.put_line('语句执行成功'); end if; end; --SQL%ROWCOUNT:游标属性SQL%ROWCOUNT用于返回SQL语句所作用的总计行数 DECLARE v_deptno emp.deptno%TYPE:=&no; BEGIN update emp set sal=sal*1.1 where deptno=v_deptno; dbms_output.put_line('修改了'||SQL%ROWCOUNT||'行'); END; --事务控制语句 --在PL/SQL块中使用COMMIT和ROLLRACK语句 DECLARE v_sal emp.sal%TYPE:=&salary; v_ename emp.ename%TYPE:='&name'; BEGIN update emp set sal=v_sal where ename=v_ename; commit; EXCEPTION WHEN OTHERS THEN ROLLBACK; END; select * from emp; --在PL/SQL块中使用ROLLBACK和SAVEPOINT语句 create table temp ( tempid NUMBER(10) ) select * from dual; select * from temp; BEGIN INSERT INTO temp VALUES(1); SAVEPOINT a1; INSERT INTO temp VALUES(2); SAVEPOINT a2; INSERT INTO temp VALUES(3); SAVEPOINT a3; ROLLBACK TO a2; COMMIT; END; select * from temp;
相关推荐
在“精通Oracle10编程SQL(8)使用复合数据类型.sql”和“精通Oracle10编程SQL(15)使用对象类型.sql”中,你会了解到Oracle10支持的复杂数据类型,如数组、集合、记录和自定义对象类型。这些数据类型允许你处理更复杂...
精通Oracle SQL【第2版】ORACLE SQL高级编程【第二版】学习笔记
本资源“精通Oracle 10g SQL和PL SQL.zip”提供了全面的学习指南,帮助用户从基础到高级进阶,掌握这两个重要组件的精髓。 SQL(Structured Query Language)是用于管理关系数据库的标准语言,它允许用户创建、查询...
《精通Oracle 10g SQL和PL/SQL》是专门为Oracle应用开发人员所提供的SQL和PL/SQL编程指南。通过学习《精通Oracle 10g SQL和PL/SQL》,读者不仅可以掌握SQL和PL/SQL的基础知识,而且还可以掌握SQL高级特征(正则...
《精通Oracle10编程》是一本专为数据库管理员和开发者设计的专业书籍,旨在深入解析Oracle 10g数据库系统的各种核心技术和高级特性。Oracle 10g是Oracle公司推出的一个重要版本,它在性能、可扩展性和管理性方面都有...
sql是关系数据库的基本操作语言 它是应用程序与数据库进行交互操作的接口 pl/sql是oracle特有的编程语言 它不仅具有过程编程语言的基本特征 循环 条件分支等 而且还具有对象编程语言的高级特征 重载 继承等 ...
精通ORACLE10GPLSQL编程 、
通过阅读《精通Oracle PLSQL编程》这本书,你将有机会掌握这些核心概念,并逐步成为一个熟练的Oracle数据库开发者。书中的实例和练习将帮助你更好地理解和应用这些技术,为你的职业生涯打下坚实的基础。
本书是专门为oracle应用开发人员提供的sql和pl/sql编程指南。通过学习本书,读者不仅可以掌握oracle常用工具oracle universal installer、net comfiguration assistant、sql developer、sql*plus的作用及使用方法...
学习Oracle编程首先需要掌握SQL的基础语法,包括SELECT语句用于数据检索,INSERT用于数据插入,UPDATE用于修改已有数据,以及DELETE用于删除数据。此外,了解子查询、连接查询、集合操作等高级SQL特性也是必备技能。...
《精通Oracle PL/SQL》这本书深入探讨了这个语言的各个方面,旨在帮助读者掌握其精髓并提升在数据库开发中的效率。书中提供的源码示例是学习和理解PL/SQL语法、功能以及最佳实践的重要资源。 在"2174_...
根据提供的文件信息,“精通Oracle10编程.pdf”这一资料似乎主要涵盖了Oracle 10g数据库的相关编程技术。接下来,我们将从几个方面详细解读该文档可能涉及的重要知识点。 ### 一、Oracle 10g简介 Oracle 10g是甲骨...
本教程的"精通Oracle10编程"部分,将深入讲解如何使用PL/SQL进行数据库交互,包括变量声明、流程控制、异常处理和游标等基本概念。 在PL/SQL编程中,了解SQL DML语句(INSERT、UPDATE、DELETE)是基础,它们用于...
《精通Oracle10g SQL/PL编程》是一本专为数据库开发者和管理员设计的专业书籍,旨在深入探讨Oracle10g数据库管理系统中的SQL和PL/SQL编程技术。这本书以通俗易懂的方式,为初学者提供了全面的学习路径,同时也为有...
《精通Oracle SQL(第2版)》是一本深入解析Oracle数据库查询语言的专业书籍,由Oracle ACE和OakTable团队的专家共同撰写,集成了他们的丰富经验和专业知识。这本书旨在帮助读者掌握Oracle SQL的高级技巧,提升在...
这个“精通Oracle SQL编程全套教程”不仅适用于初学者,也适合有一定经验的DBA和开发者,它将全面提升你在Oracle数据库环境中的技能和效率。通过深入学习和实践,你将成为Oracle SQL编程的专家。
精通OraclePl.SQL编程.pdf