1. 编写函数接受参数并返回字符串:Hello $var.然后赋值给绑定变量并打印;
 create or replace function hello_function
( pv_whom varchar2 ) return varchar2 is
begin
return 'Hello '||pv_whom||'.';
end;
/ SQL> variable result varchar2(20);
SQL> call hello_function('Sam') into :result; Call completed. SQL> print :result

  2.获取系统精确时间和精确到天的时间

 declare
lv_date_1 date :=sysdate;
lv_date_2 date :=lv_date_1;
begin
dbms_output.put_line('lv_date_1: '||to_char(lv_date_1,'dd-mon-yy hh24:mi:ss'));
dbms_output.put_line('lv_date_2: '||to_char(trunc(lv_date_2),'dd-mon-yy hh24:mi:ss'));
end;
/ SQL>
lv_date_1: 22-8鏈-13 16:33:18
lv_date_2: 22-8鏈-13 00:00:00

  3.利用timestamp求出时间间隔

 declare
lv_interval interval day(9) to second;
lv_end_day date :=sysdate;
lv_start_day date := '28-apr-2012';
begin
lv_interval :=to_timestamp(lv_end_day) -to_timestamp(lv_start_day);
dbms_output.put_line(lv_interval);
end;
/ SQL>
+000000481 18:29:37.000000

  4.编写一个静态游标

 declare
cursor c is
select * from scott.dept;
begin
for i in c loop
dbms_output.put_line(i.loc);
end loop;
end;
/ SQL>
NEW YORK
DALLAS
CHICAGO
BOSTON PL/SQL procedure successfully completed.

  5.编写一个动态游标

 declare
lv_search_sal pls_integer;
cursor c (cv_search pls_integer) is
select * from scott.emp where sal>cv_search;
begin
for i in c (&input) loop
dbms_output.put_line(to_char(i.empno)||' '||i.ename||' '||i.job||' '||to_char(i.sal));
end loop;
end;
/ SQL> @afiedt.buf
Enter value for input: 990
old 6: for i in c (&input) loop
new 6: for i in c (990) loop
7499 ALLEN SALESMAN 1600
7521 WARD SALESMAN 1250
7566 JONES MANAGER 2975
7654 MARTIN SALESMAN 1250
7698 BLAKE MANAGER 2850
7782 CLARK MANAGER 2450
7788 SCOTT ANALYST 3000
7839 KING PRESIDENT 5000
7844 TURNER SALESMAN 1500
7876 ADAMS CLERK 1100
7902 FORD ANALYST 3000
7934 MILLER CLERK 1300

  6.利用游标查找符合要求的行然后更改每一行

 declare
cursor c is
select * from scott.emp where sal<990 for update;
begin
for i in c loop
update scott.emp set sal=sal*1.1
where current of c;
end loop;
end;
/

  7.显式游标的批量处理数据,建议取游标集合中的250~300条数据一次性处理;

 declare
type people_record is record
(ename varchar2(30),sal pls_integer);
type people_collection is table of people_record;
lv_people_collection people_collection;
cursor c is
select ename,sal from scott.emp;
begin
open c;
loop
fetch c bulk collect into lv_people_collection limit 5;
exit when lv_people_collection.count=0;
for i in 1..lv_people_collection.count loop
dbms_output.put_line(lv_people_collection(i).ename||' '||to_char(lv_people_collection(i).sal));
end loop;
dbms_output.put_line(to_char(c%rowcount));
end loop;
close c;
end;
/
~ SQL> @a.sql;
SMITH 800
ALLEN 1600
WARD 1250
JONES 2975
MARTIN 1250
5
BLAKE 2850
CLARK 2450
SCOTT 3000
KING 5000
TURNER 1500
10
ADAMS 1100
JAMES 950
FORD 3000
MILLER 1300
14 PL/SQL procedure successfully completed.

pl sql练习(1)的更多相关文章

  1. Oracle PL/SQL随堂笔记总结

    1.pl/sql编程 2.存储过程 3.函数 4.触发器 5.包 6.pl/sql基础 -定义并使用变量 7.pl/sql的进阶 8.oracle的视图 1.pl/sql编程 1.理解oracle的p ...

  2. Oracle学习笔记十 使用PL/SQL

    PL/SQL 简介 PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言,是对 SQL 的扩展,它支持多种数据类型,如大对象和集合类型,可使用 ...

  3. PL/SQL连接错误:ora-12705:cannot access NLS data files or invalid environment specified

    适合自己的解决方法: 排查问题: 1. 你没有安装Oracle Client软件.这是使用PL/SQL Developer的必须条件.安装Oracle Client后再重试.2. 你安装了多个Orac ...

  4. PL/SQL循环

    1.if循环做判断 SET SERVEROUTPUT ON accept num prompt 'qinshuu'; DECLARE pnum NUMBER :=& num ; BEGIN T ...

  5. PL/SQL存储过程编程

    PL/SQL存储过程编程 /**author huangchaobiao *Email:huangchaobiao111@163.com */ PL/SQL存储过程编程(上) 1. Oracle应用编 ...

  6. PL/SQL连接Oracle数据库,中文乱码,显示问号

    问题描述: 登陆PL/SQL,执行SQL语句后,输出的中文标题显示成问号????:条件包含中文,则无数据.         如果不是中文,需要修改注册表值,方法如下: 进入注册表:Win+r,输入re ...

  7. PL/SQL客户端中执行insert语句,插入中文乱码

    问题描述:在PL/SQL客户端中执行insert语句,插入中文乱码 解决方案: 1.执行脚本 select userenv('language') from dual;    结果为AMERICAN_ ...

  8. PL/SQL Developer如何连接64位的Oracle图解

    在64位Win7系统上安装64位的Oracle数据库,但是没有对应的64位PL/SQL Developer,此时就不能使用PL/SQL Developer来进行直接连接的,所以要想实现连接还得需要其他 ...

  9. 每周一书《Oracle 12 c PL(SQL)程序设计终极指南》

    本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQ ...

  10. pl/sql里的exists和in的差别

    项目中有个需要需要如下pl/sql(数据库是MariaDB) ) AS small FROM cmp_ent_main a WHERE createTime<'2016-9-21' ,,) ) ...

随机推荐

  1. 2016 ACM/ICPC Asia Regional Shenyang Online

    I:QSC and Master 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5900 题意: 给出n对数keyi,vali表示当前这对数的键值和权值 ...

  2. Android中Binder的基础知识点

    Android Binder基础知识点 一 传统IPC和Binder机制的比较 传统IPC: 1)收方无法获得对方进程可靠的UID/PID,从而无法鉴别对方身份. 2)接入点开放,无法建立私有通道. ...

  3. 自定义UIView动画效果

    最普通动画: //开始动画 [UIView beginAnimations:nil context:nil]; //设定动画持续时间 [UIView setAnimationDuration:]; / ...

  4. 获取UILabel上最后一个字符串的位置。获取文字长度和高度,自动换行

    //行的高度. -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPat ...

  5. OpenGL ES 2.0 shader开发

    1.创建一个shader容器 GLES20.glCreateShader(shaderType); 函数原型为: int glCreateShader (int type) 方法参数: GLES20. ...

  6. git rm

    git rm可以执行删除的条件(前提是要被删除的文件还没有从workspace tree中移除) git rm可以执行删除的条件:被删除文件在index当中的blob内容必须与HEAD commit指 ...

  7. 子元素用margin-top 为什么反而作用在父元素上?对使用margin-top 的元素本身不起作用?

    在这个说明中,“collapsing margins”(折叠margin)的意思是:2个或以上盒模型之间(关系可以是相邻或嵌套)相邻的margin属性(这之间不能有非空内容.padding区域.bor ...

  8. web容器 - Jetty

    详解web容器 - Jetty与Tomcat孰强孰弱   Jetty 基本架构 Jetty目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器. 它 ...

  9. sqlserver系统表操作

    查询表名中包含‘user’的方法Select * From sysobjects Where name like '%user%' 如果知道列名,想查找包含有该列的表名,可加上系统表syscolumn ...

  10. mysql索引分类及注意事项

    MYSQL索引主要分为四类:主键索引,普通索引(聚合,非聚合),唯一索引,全文索引 全文索引,主要是针对对文件,文本的检索, 比如文章, 全文索引针对MyISAM有用. 索引的原理:利用二叉树(哈希表 ...