《1.PL SQL基础知识》.ppt

  1. 1、本文档共56页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 当需要从数据库中选取数据或请求更新数据库时,必须使用SQL。PL/SQL支持所有的SQL数据操纵语言和事务控制命令。 一个 PL/SQL 块不是一个事务单元。 Commits, savepoints 和 rollbacks 命令独立于块,但可在块中使用这些命令。 PL/SQL不直接支持数据定义语言 (DDL), 如 CREATE TABLE, ALTER TABLE 和 DROP TABLE。 PL/SQL 不直接支持数据控制语言 (DCL), 如 GRANT 和 REVOKE。 * select_list 是一列或多列的列名列表,可包括SQL表达式、行函数和组函数; variable_name 为将结果返回给哪个变量; record_name 为结果要返回到的PL/SQL记录; condition 为查询条件,由列名、表达式、常量和比较运算符组成,也包括PL/SQL变量和常量 在SELECT 和 FROM子句之间,INTO 子句是必须出现的。它将SQL SELECT 子句的结果返回给变量。必须为选择的每一项分配变量,且变量的次序要与选择项的次序相同。 查询仅返回单行值 PL/SQL 块的SELECT 语句是嵌入式SQL,符合美国国家标准协会(ANSI)的分类标准,必须遵循以下原则:查询仅返回单行值。无返回值或返回多行值均会产生错误,对于这些错误,在PL/SQL块的异常处理部分,以 NO_DATA_FOUND 和 TOO_MANY_ROWS 标明。 注: 在PL/SQL的SELECT语句中,INTO子句是必须的,相比在SQL 中INTO子句是禁止出现的。 * 遵循以下原则从PL/SQL中检索数据: 使用分号(;)终止每一个SQL语句。 在嵌入式PL/SQL中的SELECT子句中,必须使用 INTO 子句。 WHERE 子句是可选的,用来指定输入的变量、常量、文字或PL/SQL表达式。 INTO 子句中的输出变量的数量要与SELECT子句中的数据库列的数量相同。使用%TYPE声明变量以保证变量与其相应的列有相同的数据类型。总之,INTO 子句中变量的类型与数量要与SELECT子句中的列相匹配。 可在SELECT 语句中使用组函数(如,SUM)。尽管组函数在PL/SQL语法中不适用,但它能用在PL/SQL块中的SQL语句中。 附注: 输出变量是PL/SQL变量,通过输出变量将数据库中的值传递给PL/SQL块。输出变量的数据类型必须与相应列的数据类型相同。输出变量不允许是布尔型变量。 输入变量也是PL/SQL变量,通过输入变量将PL/SQL块中的值传递给数据库。 无返回值或返回多行值均会产生错误,对于这些错误,在PL/SQL块的异常处理部分,以 NO_DATA_FOUND 和 TOO_MANY_ROWS 标明。 * * 使用DML( data manipulation )命令,来操纵数据库中的数据。 DML命令 INSERT, UPDATE 和DELETE 均可在PL/SQL块中实现,而不受限制。在PL/SQL代码中使用COMMIT 或 ROLLBACK语句来释放列锁定(和表锁定)。 INSERT 语句给已有的表添加记录。 UPDATE 语句修改表中已有的记录。 DELETE 语句删除表中的记录。 * * 如果没有符合条件的行被更新,不会产生错误;这一点与SELECT语句不同。 附注: PL/SQL 变量的赋值符是 := ,而SQL 列的赋值符是 =。 如果WHERE子句中的列名与标识符名相同,Oracle Server 会首先在数据库中查找该名。 * 1、 create table test as select * from emp where 1=2; 2、 DECLARE v_sal emp.sal%type; BEGIN select max(sal) into v_sal from emp; insert into test select * from emp where sal=v_sal; END; 3、 set serveroutput on DECLARE v_sal emp.sal%type; BEGIN select avg(sal) into v_sal from emp; update test set sal=v_sal; dbms_output.put_line(v_sal); END; * * 在Oracle中,当第一条SQL开始执行时,一个新的事务就开始了。而事务的结束一般是使用COMMIT(提交)或 ROLLBACK(回

文档评论(0)

ghfa + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档