自学PL/SQL 第三讲Interacting with the Oracle Server

简介:

本讲课程目标
1.在PL/SQL块中执行select语句
2.在PL/SQL块中执行DML语句和控制事务
3.使用隐式游标定义PL/SQL块中DML语句的输出

在PL/SQL块中"END;"表示结束PL/SQL块,但并没有结束事务,一个块可以跨越多个事务,一个事务也可以跨越多个块;PL/SQL块中不支持DDL和DCL语句,例如建表,赋予用户权限等.

一:在PL/SQL块中执行select语句
select语句在PL/SQL块中的语法结构如下

SELECT select_list
INTO     {variable_name[, variable_name]...
         | record_name}
FROM table
[WHERE condition];
范例:


 
 
  1. SQL> set serveroutput on  
  2. SQL> DECLARE  
  3.   2      v_first_name hr.employees.first_name%TYPE;  
  4.   3      v_last_name  hr.employees.last_name%TYPE;  
  5.   4  BEGIN  
  6.   5     SELECT first_name,last_name INTO  
  7.   6     v_first_name,v_last_name FROM hr.employees  
  8.   7     WHERE employee_id=100;  
  9.   8     DBMS_OUTPUT.PUT_LINE(v_first_name ||' '||v_last_name);  
  10.   9* END;  
  11.  
  12. SQL> /  
  13. Steven King  
  14. PL/SQL procedure successfully completed 

二.在PL/SQL块中执行DML语句和控制事务
可以在PL/SQL块中使用SQL的函数,自定义的序列号,字段的默认值插入数据


 
 
  1. SQL> create table t14703a (id number(5),constraint pk_t14703a primary key(id),  
  2.  2   location varchar2(30) default 'fuzhou',salary number(8,2));  
  3. Table created.  
  4.  
  5. SQL> create sequence user_seq  
  6.   2  increment by 1  
  7.   3  start with 1  
  8.   4  maxvalue 99999  
  9.   5  nocache  
  10.   6* nocycle  
  11. Sequence created.  
  12.  
  13. SQL> select user_seq.nextval from dual;  
  14.  
  15.    NEXTVAL  
  16. ----------  
  17.          1  
  18.  
  19. SQL> BEGIN  
  20.   2   INSERT INTO hr.t14703a  
  21.   3   (id,location,salary) VALUES  
  22.   4   (user_seq.nextval,default,'6000');  
  23.   5  COMMIT;  
  24.   6* END;  
  25. SQL> /  
  26. PL/SQL procedure successfully completed.  
  27.  
  28. SQL> select * from hr.t14703a;  
  29.  
  30.         ID LOCATION       SALARY  
  31. ---------- ---------- ----------  
  32.          3 fuzhou           6000  
  33.  
  34.  
  35. SQL> DECLARE  
  36.   2       v_salary_increase hr.t14703a.salary%TYPE :500;  
  37.   3    BEGIN  
  38.   4        UPDATE hr.t14703a SET salarysalary= salary + v_salary_increase  
  39.   5        WHERE id=3;  
  40.   6*   END;  
  41.   7  /  
  42. PL/SQL procedure successfully completed.  
  43.  
  44. SQL> select * from hr.t14703a;  
  45.  
  46.         ID LOCATION       SALARY  
  47. ---------- ---------- ----------  
  48.          3 fuzhou           6500 

三.使用隐式游标定义PL/SQL块中DML语句的输出
SQL游标,游标是私有的SQL工作区,有隐式和显式游标两个类型;oracle server使用隐式的游标来执行SQL语句
A cursor is a private SQL work area.
There are two types of cursors:
– Implicit cursors
– Explicit cursors
The Oracle server uses implicit cursors to parse and execute your SQL statements.
Explicit cursors are explicitly declared by the programmer.

4种游标的属性SQL%COUNT,SQL%FOUND,SQL%NOTFOUND,SQL%ISOPEN

  


 
 
  1. SQL> VAR rownums varchar2(30)  
  2. SQL> set serveroutput on  
  3. SQL> DECLARE  
  4.   2     v_a  hr.t04310_a.a%TYPE :50000;  
  5.   3   BEGIN  
  6.   4     delete  from  hr.t04310_a where a < v_a;  
  7.   5     :rownums := (SQL%ROWCOUNT ||' ' || 'row deleted');  
  8.   6     DBMS_OUTPUT.PUT_LINE(:rownums);  
  9.   7*  END;  
  10.   8  /  
  11. 40000 row deleted  
  12. PL/SQL procedure successfully completed. 

 本文转自斩月博客51CTO博客,原文链接http://blog.51cto.com/ylw6006/630144如需转载请自行联系原作者


ylw6006

相关文章
|
5月前
|
SQL Oracle 关系型数据库
解决大小写、保留字与特殊字符问题!Oracle双引号在SQL中的特殊应用
在Oracle数据库开发中,双引号的使用是一个重要但易被忽视的细节。本文全面解析了双引号在SQL中的特殊应用场景,包括解决标识符与保留字冲突、强制保留大小写、支持特殊字符和数字开头标识符等。同时提供了最佳实践建议,帮助开发者规避常见错误,提高代码可维护性和效率。
203 6
|
6月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
|
6月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】yashandb执行包含带oracle dblink表的sql时性能差
【YashanDB知识库】yashandb执行包含带oracle dblink表的sql时性能差
|
6月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
本文来自YashanDB官网,介绍如何处理Oracle客户端sql*plus中使用@@调用同级目录SQL脚本的场景。崖山数据库23.2.x.100已支持@@用法,但旧版本可通过Python脚本批量重写SQL文件,将@@替换为绝对路径。文章通过Oracle示例展示了具体用法,并提供Python脚本实现自动化处理,最后调整批处理脚本以适配YashanDB运行环境。
|
8月前
|
SQL Oracle 关系型数据库
如何在 Oracle 中配置和使用 SQL Profiles 来优化查询性能?
在 Oracle 数据库中,SQL Profiles 是优化查询性能的工具,通过提供额外统计信息帮助生成更有效的执行计划。配置和使用步骤包括:1. 启用自动 SQL 调优;2. 手动创建 SQL Profile,涉及收集、执行调优任务、查看报告及应用建议;3. 验证效果;4. 使用 `DBA_SQL_PROFILES` 视图管理 Profile。
|
9月前
|
SQL 存储 关系型数据库
SQL自学笔记(3):SQL里的DCL,DQL都代表什么?
本文介绍了SQL的基础语言类型(DDL、DML、DCL、DQL),并详细说明了如何创建用户和表格,最后推荐了几款适合初学者的免费SQL实践平台。
577 3
SQL自学笔记(3):SQL里的DCL,DQL都代表什么?
|
9月前
|
SQL 数据挖掘 数据库
SQL自学笔记(2):如何用SQL做简单的检索
本文深入介绍了SQL的基本语法,包括数据查询、过滤、排序、分组及表连接等操作,并通过实际案例展示了SQL在用户研究中的应用,如用户行为分析、用户细分、用户留存分析及满意度调查数据分析。
144 0
SQL自学笔记(2):如何用SQL做简单的检索
|
9月前
|
SQL 数据挖掘 关系型数据库
SQL自学笔记(1):什么是SQL?有什么用?
本文为用户研究新手介绍SQL(结构化查询语言),解释了SQL的基本概念、入门方法及在用户研究中的应用通过实际案例说明,如用户行为分析、用户细分和满意度调查数据分析,展示了SQL在用户研究中的重要作用。
2941 0
SQL自学笔记(1):什么是SQL?有什么用?
|
10月前
|
SQL 数据采集 监控
局域网监控电脑屏幕软件:PL/SQL 实现的数据库关联监控
在当今网络环境中,基于PL/SQL的局域网监控系统对于企业和机构的信息安全至关重要。该系统包括屏幕数据采集、数据处理与分析、数据库关联与存储三个核心模块,能够提供全面而准确的监控信息,帮助管理者有效监督局域网内的电脑使用情况。
132 2
|
11月前
|
SQL 监控 Oracle
Oracle SQL性能优化全面指南
在数据库管理领域,Oracle SQL性能优化是确保数据库高效运行和数据查询速度的关键
1424 6

热门文章

最新文章

推荐镜像

更多