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. jquery中的 ajax 以及map遍历

    1.语法 $.ajax{ type:'get',//类型 有get post url:'',//路径 data:{name:$('#ma').val(),nameq:$('#maq').val()}, ...

  2. 面试总结之html+css

    最近面试了一些公司,和技术总监聊了一些前端技术方面的内容.回来之后我总结了一下,大致可以分为三个模块:第一.Html与css 方面:第二.浏览器解析方面:第三.js方面.打算,分为三篇博文,根据自己的 ...

  3. Could not load file or assembly 试图加载格式不正确的程序

    问题: 今天发布项目的时候遇到这个破问题,纳闷了好久,最后想起来自己改过程序生成的目标平台(原生成目标平台是Any CPU,被我改成了X86的). 解决方法: 改回原来的Any CPU 从新发布即可.

  4. Content-Disposition的使用和注意事项(转载)

    Content-Disposition的使用和注意事项 最近不少Web技术圈内的朋友在讨论协议方面的事情,有的说web开发者应该熟悉web相 关的协议,有的则说不用很了解.个人认为这要分层次来看待这个 ...

  5. IOS开发之程序执行状态更改

    1 前言 上节我们介绍了程序执行的状态,从例子中我们可以发现处理这些状态更改的时候有明确的策略可以遵循,这次我们就来介绍一下. 2 详述 2.1 活动->不活动 使用applicationWil ...

  6. JDBC学习入门

    一.JDBC相关概念介绍 1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡 ...

  7. activiti笔记二:用户任务

    1, assignee 代替humanPerformer  功能 2, cadidateUsers代替potentialOwner功能 3, candidateGroups代替potentialOwn ...

  8. 设置secureCRT中vim的字体颜色

    1.在/etc/vimrc新增以下一行 syntax on 注:上述方法对root用户无效,原因为在一般用户中,alias vi=vim,而在root用户中默认无此设置,因此若需要root用户也显示颜 ...

  9. 菜单之一:Menu基础内容

    参考<疯狂android讲义>2.10节P168 1.重要接口 Android菜单相关的重要接口共有以下四个: 其中Menu为普通菜单,SubMenu包含子项,ContextMenu当长时 ...

  10. Ubuntu Codeblocks Installation

    Download and Installation sudo add-apt-repository ppa:damien-moore/codeblocks sudo apt update sudo a ...