pl/sql学习文档

preview
需积分: 0 2 下载量 155 浏览量 更新于2009-03-06 收藏 459KB DOC 举报
在PL/SQL编程中,我们经常需要处理数据库的数据,这涉及到一系列的操作,如查询、插入、更新和删除。本篇文章将详细讲解PL/SQL中涉及的存储结构、函数、循环语句以及游标等核心概念。 PL/SQL块允许直接嵌入SQL语句,如SELECT、DML(INSERT, UPDATE, DELETE)和事务控制语句(COMMIT, ROLLBACK, SAVEPOINT)。然而,DDL(CREATE, ALTER, DROP)和DCL(GRANT, REVOKE)语句不能直接在PL/SQL块中使用,它们需要在SQL*Plus或类似的环境中单独执行。 1. **检索单行数据** - **使用标量变量**:我们可以定义与表列类型相同的变量,如`v_ename`和`v_sal`,然后使用`SELECT INTO`将查询结果直接赋值给这些变量。这里,`emp.ename%type`和`emp.sal%type`表示变量类型与`emp`表的`ename`和`sal`列相同。 - **使用记录变量**:记录变量可以同时接收多列数据,如`emp_record_type`记录变量包含了`ename`和`sal`两列。同样,`SELECT INTO`用于将查询结果存入记录变量。 - **注意事项**:`SELECT INTO`必须返回且只能返回一条数据。否则,如果没有返回数据,会触发`NO_DATA_FOUND`异常;如果返回多条数据,会触发`TOO_MANY_ROWS`异常。在`WHERE`子句中,避免使用与列名相同的变量名以防止引发`TOO_MANY_ROWS`异常。 2. **操纵数据** - **插入数据**:可以通过`VALUES`子句或者子查询来插入数据。例如,可以先定义变量`v_deptno`和`v_dname`,然后使用`INSERT INTO`语句插入值。 - **更新数据**:更新数据通常涉及使用表达式或子查询来改变列的值。例如,通过设置`v_deptno`和`v_loc`,然后使用`UPDATE`语句更新`dept`表中的`loc`列。 - **删除数据**:可以使用变量或子查询来删除数据。例如,通过设置`v_deptno`,然后使用`DELETE FROM`语句删除特定部门的数据。 3. **SQL游标** - **游标**是处理查询结果集的一种机制,分为隐式游标(SQL游标)和显式游标。SQL游标主要应用于单行操作,而显式游标用于处理多行结果。 - **SQL游标属性**: - `SQL%ISOPEN`:在执行时,系统会自动打开和关闭游标,因此其值始终为`FALSE`。 - `SQL%FOUND`:检查SQL语句是否成功执行,如果有影响的行,其值为`TRUE`,否则为`FALSE`。 - `SQL%NOTFOUND`:与`SQL%FOUND`相反,当没有影响的行时,其值为`TRUE`。 - `SQL%ROWCOUNT`:返回上一个DML操作影响的行数。 例如,当尝试更新指定部门员工的薪水时,可以使用`UPDATE`语句,并检查`SQL%FOUND`属性来判断操作是否成功。 总结,PL/SQL提供了一套强大的工具来处理数据库操作,包括对单行数据的检索和操纵,以及通过游标处理多行数据。理解并熟练运用这些概念是成为高效PL/SQL程序员的关键。在实际编程中,需要注意异常处理、事务管理和资源管理,以确保代码的健壮性和性能。
unirong
  • 粉丝: 39
  • 资源: 7
上传资源 快速赚钱
voice
center-task 前往需求广场,查看用户热搜