DDL commands --> create user / table / view / sequence

alter

DML --> data manipulation language (insert, select, update, delete)

eg :

SELECT ename FROM emp WHERE sal = (SELECT MAX(sal) FROM EMP);

%type(single col), %rowtype(single row/record)

cursor --> manu columns/rows

eg :

DECLARE

l_emp_ename emp.ename%type;

BEGIN

SELECT ename INTO l_emp_ename FROM emp WHERE sal = (SELECT MAX(sal) FROM EMP);

DBMS_OUTPUT.put_line('Message');

END;

DBMS_OUTPUT.put('message');

DBMS_OUTPUT.put_line('message);

the implicit cursor(give us 1 row/record)(create / open / get data / close by oracle automatically)

eg : select ename from emp where empno=1111;

the explicit cursor(give us many rows/records)(create / open / get data / close by ourselves)

eg : select * from emp;

an emplicit sursor works as follows :

open the cursor

fetch data from the cursor

fetch again to check if any more rows are found

eg :

DECLARE

l_find_job varchar2(10) := 'PROGRAMMER';

BEGIN

UPDATE emp

SET job = 'DEVELOPER'

WHERE job = 'PROGRAMMER';

END;

commir : save all DML commands

rollback : undo before commit

savepoint : roll back to the savepoint; clear all data till the last commit(when there is no savepoint)

aotocommit : when you  close SQL*PLUS if autocommit is on, the data is you delete, update or insert without commit is saved.

set autocommit on/off

show autocommit

transaction control

eg :

BEGIN

update

commit

END;

commit

eg :

BEGIN

DELETE debug;

SAVEPOINT deleted_debug;

DELETE transactions;

ROLLBACK TO deleted_debug;

COMMIT;

END;

TRANSACTION starts from the last commit end with the commit.

eg :

create table test1(ename varchar2(10));

whenever you issue a SQL statement in a PL/SQL block, PL/SQL creates an implicit cursor, the implicit cursor is using number of attribute that can be selected to find the result of the SQL command.

SQL%ROWCOUNT : the number of rows processed by the SQL statement

SQL%FOUND : true if at least one row was processed by the SQL statement, otherwise false

SQL%NOTFOUND : true if no rows were processed by the SQL statement, otherwise false.

eg : select ename from emp where empno = 1111;

DBMS_OUTPUT.put_line(SQL%ROWCOUNT); (1)

eg : select * from emp;

SQL%ROWCOUNT ()

eg : select ename from emp where 1 = 2;

SQL%ROWCOUNT(0)

copy emp table to emp1 with all rec & data : create table emp1 as select * from emp;

find the largest number from three numbers

eg:

DECLARE

num1 number(10) := '&num1';

num2 number(10) := '&num2';

num3 number(10) := '&num3';

BEGIN

if num1 >= num2 then

if num2 >= num3 then

DBMS_OUTPUT.put_line(num1);

elif num1 >= num3 then

DBMS_OUTPUT.put_line(num1);

else

DBMS_OUTPUT.put_line(num3);

elif num2 >= num3 then

DBMS_OUTPUT.put_line(num2);

else

DBMS_OUTPUT.put_line(num3);

END;

eg :

DBMS_OUTPUT.new_line;

DBMS_OUTPUT.put_line();

DBMS_OUTPUT.put();

write a program to reverse the number user input : 5678 output : 8765

eg :

write a program to find the factorial (input 4 --> 4*3*2*1 ==) total as a result

eg :

declare

num number(4) := #

total number(10) := 1;

begin

for i in num

loop

total := total *i;

end loop;

end;

/

write a program to print fibonacci series(the next number is the sum of last two numbers)(0112358...)

eg :

declare

num1 number(5) := 0;

num2 number(5) := 1;

num3 number(5) := 1;

num number(5) := #

begin

for i in 1.. num

loop

num1 := num3 + num2;

num2 := num3 + num1;

num3 := num1 + num2;

DBMS_OUTPUT.put_line(num1);

DBMS_OUTPUT.put_line(num2);

DBMS_OUTPUT.put_line(num3);

end loop;

end;

/

eg :

declare

num number(6) := #

num1 number(6) := 0;

num2 number(6) := 1;

num3 number(6) := 1;

begin

DBMS_OUTPUT.put(' ' || num1);

DBMS_OUTPUT.put(' ' || num2);

for i in 3..num

loop

num3 := num1 + num2;

DBMS_OUTPUT.put(' ' || num3);

num2 := num2;

num2 := num3;

end loop;

DBMS_OUTPUT.new_line;

end;

wtite a program to display the given number is a prome number or not.(质数)(using mod() remaining=0 )

eg :

declare

num number(6) := #

begin

for i in 2..num

loop

if mod(num, i) != 0 then

end loop;

end;

eg :

declare

num number(5) := #

a number(5);

begin

for i in 2..num-1

loop

a := MOD(num, i);

if  a = 0 then

goto ABC

end if;

end loop;

<<ABC>>

if a = 1 then

DBMS_OUTPUT.put_line(num || ' is a prime number');

else

DBMS_OUTPUT.put_line(num || ' is not a prime number');

end if;

end;

.

/

%type (single column)

%rowtype (all column)

some columns from the table

composite type

eg :

declare

TYPE emp_rec_type is record ( name varchar2(10), sal number(10), hiredate date);

emp_rec emp_rec_type;

begin

select ename, sal, hiredate into emp_rec from emp where empno = &empno;

DBMS_OUTPUT.put_line(emp_rec.name || emp_rec.sal || emp_rec.hiredate);

end;

.

/

SQL with PL/SQL的更多相关文章

  1. SQL和PL/SQL的区别

    SQL和PL/SQL的区别 1. SQL是结构化查询语言,比较接近自然语言,使用SQL,只需要说干什么,不需要说怎么干.由数据定义语言.数据操纵语言.数据控制语言构成,它不面向过程,即前一条语句与后一 ...

  2. [PL/SQL]使用PL/SQL实现ORACLE的Excel格式导入导出

    注:教程所使用的PL/SQL Developer版本为10版本 1.oracle导出excel格式 第一步,在pl/sql窗口查询出你想要导出的数据. 第二步,选择你想导出的数据,然后右键" ...

  3. 动态SQL和PL/SQL的EXECUTE选项分析

    EXECUTE IMMEDIATE代替了以前Oracle8i中DBMS_SQL package包.它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,EX ...

  4. SQL、PL/SQL、DDL、DML、TCL介绍

    SQL:结构化查询语言(Structured Query Language) PL/SQL:过程化SQL语言(Procedural Language/SQL) DDL(Data Definition ...

  5. 【PL/SQL编程】SQL与PL/SQL的区别

    SQL概念: SQL是结构化查询语言,由数据定义语言.数据操纵语言.数据控制语言构成,它不面向过程,即前一条语句与后一条语句无关.它没有流程控制,也不存在变量. PL SQL概念:    PL/SQL ...

  6. PL/SQL不能格式化SQL:--PL/SQL Beautifier could not parse text

    PL/SQL sql语句美化器点击没有反应.查看下面提示PL/SQL Beautifier could not parse text.本人此次产生的原因是sql语句语法错误. 工具栏处(如果没有此按钮 ...

  7. Oracle 和pl/sql以及pl/sql developer

    oracle是厂家的名字,也是数据库产品的名字.比如sybase公司的sybase数据库.而微软公司的数据库产品就叫sqlserver了. pl/sql 是oracle数据库所用的sql语言的名称.微 ...

  8. PL\SQL和PL/SQL Developer 12安装与配置

    安装: (1)在已有安装包的情况下,直接将安装包解压到文件夹下,注意不要解压缩到c:\programs Files(x86)的文件夹下,不能解压缩到有中文文件夹命名的文件夹下面 (2)没有安装包的情况 ...

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

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

随机推荐

  1. 【服务器环境搭建-Centos】常用系统命令篇

    uname -a 查看系统信息

  2. find和xargs

    find 命令的一般形式为 find pathname -options [-print -exec -ok] 让我们来看看该命令的参数: pathname find命令所查找的目录路径.例如用.来表 ...

  3. java 集合2(迭代器)

    迭代器方法:(把迭代器想象成抓娃娃机的爪子) hasNext()     问是否有元素可遍历,如果有元素可以遍历,返回true,否则返回false 工作原理:这一个迭代的过程是这样的,获取到迭代器时候 ...

  4. java 模板

    模板模式: 解决某类事情的步骤有些是固定的,有些是会发生变化的,这时我们提供 一个模板代码,从而提高效率. 模板模式的作用: 1.解决这类事情其中一件的解决方案. 2.分析代码,把发生变化的代码抽象取 ...

  5. GIT命令(急速学习)

    用过sourceTree,egit(eclipse中的git插件),最后还是感觉git bash顺手:svn早已经不用:   先上几个原来看过的git 教程--书读百遍,其义自见.多看几篇文章才能总结 ...

  6. python中的类变量、实例变量

    类变量,是各个实例共享的资源,就像中央空调,只有一个,但每个房间(实例)均可享用. 实例变量,是每个实例各自分配使用的变量,每个房间(实例)都有一台空调,供自己使用. class handle(obj ...

  7. HDU----(4549)M斐波那契数列(小费马引理+快速矩阵幂)

    M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Sub ...

  8. IO流--字符流

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java ...

  9. 我的Github注册使用之旅

    [个人介绍] 我是来自网络工程143班的姜金金,学号是1413042066.我没什么大的爱好,闲时喜欢在有阳光的午后喝喝小茶,捧一本书慢慢品茗:也喜欢散散步,欣赏细碎事物的美好,驻足沿路美丽的风景.说 ...

  10. 为 Node.js 开发者准备的 8 本免费在线电子书(转)

    ode.js 是一套用来编写高性能网络服务器的JavaScript工具包,一系列的变化由此开始.比较独特的是,Node.js会假设你是在POSIX环境下运行它 Linux 或 Mac OS X.如果你 ...