[b]SQL:[/b] 结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体方法和途径,而是简单地调用相应语句来直接取得结果即可。
[b]PL/SQL[/b](Procedural Language/SQL)是一种过程化语言,属于第三代语言,它与C、C++、Java等语言一样关注于处理细节,它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事务处理语言。它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事务处理语言。PL/SQL区段只被编译一次并且以可运行的形式储存,以降低响应时间。
[b]SQL语句、PL/SQL块与SQL*Plus命令的区别[/b]
SQL语句是以数据库对象为操作对象的语言,主要包括数据定义语言DDL,数据操纵语言DML,数据控制语言DCL和数据存储语言DSL等。当输入SQL语句后,SQL*Plus将其保存在内部缓冲区中,当SQL命令输入完毕后,可以通过在命令行的末尾输入分号“;”并按回车结束,或者在单独一行上用斜杠“/”或空行表示结束。
PL/SQL块同样是以数据库对象为操作对象,但由于SQL本身不具备过程控制功能,所以为了能够与其他语言一样具备过程控制的处理功能,在SQL中加入诸如循环和选择等面向过程的处理功能,由此形成了PL/SQL。所有PL/SQL语句的解释均由PL/SQL引擎来完成,使用PL/SQL块可编写过程,触发器和包等数据库永久对象。
SQL*Plus命令主要用来格式化查询结果,设置选择,编辑以及存储SQL命令,设置查询结果的显示格式,并且可以设置环境选项。可以编辑交互语句,可以与数据库进行“对话”。
[size=large][b]一 . PL/SQL块[/b][/size]
[b]控制语句—循环[/b]
1.
2.
3.
[b]控制语句—条件[/b]
1.
2.
3. goto语句;
4. case-when
CASE有两种表达式:
a.
b.
[b]PL/SQL[/b](Procedural Language/SQL)是一种过程化语言,属于第三代语言,它与C、C++、Java等语言一样关注于处理细节,它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事务处理语言。它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事务处理语言。PL/SQL区段只被编译一次并且以可运行的形式储存,以降低响应时间。
[b]SQL语句、PL/SQL块与SQL*Plus命令的区别[/b]
SQL语句是以数据库对象为操作对象的语言,主要包括数据定义语言DDL,数据操纵语言DML,数据控制语言DCL和数据存储语言DSL等。当输入SQL语句后,SQL*Plus将其保存在内部缓冲区中,当SQL命令输入完毕后,可以通过在命令行的末尾输入分号“;”并按回车结束,或者在单独一行上用斜杠“/”或空行表示结束。
PL/SQL块同样是以数据库对象为操作对象,但由于SQL本身不具备过程控制功能,所以为了能够与其他语言一样具备过程控制的处理功能,在SQL中加入诸如循环和选择等面向过程的处理功能,由此形成了PL/SQL。所有PL/SQL语句的解释均由PL/SQL引擎来完成,使用PL/SQL块可编写过程,触发器和包等数据库永久对象。
SQL*Plus命令主要用来格式化查询结果,设置选择,编辑以及存储SQL命令,设置查询结果的显示格式,并且可以设置环境选项。可以编辑交互语句,可以与数据库进行“对话”。
[size=large][b]一 . PL/SQL块[/b][/size]
[b]控制语句—循环[/b]
1.
while (no<=90 ) loop
insert into depart(depno) values(no);
no:=no=10;
end loop;
2.
loop
.....
exit when eno=100;
.....
end loop;
3.
for num in 1..10 lopp
dbms_output.putline('');
end loop;
[b]控制语句—条件[/b]
1.
if condition then...
end if;
2.
if condition then ...
esle if condition then...
else ....
end if;
3. goto语句;
DECLARE
eno emp.empno%TYPE ;
sal emp.sal%TYPE ;
BEGIN
eno := &en ;
SELECT sal INTO sal FROM emp WHERE empno=eno ;
IF sal>3500 THEN goto po1 ;
ELSE IF sal>2000 THEN goto po2 ;
ELSE goto po3 ;
END IF ;
<<po1>> DBMS_OUTPUT.put_line('高工资。。。') ;
<<po2>> DBMS_OUTPUT.put_line('中等工资。。') ;
<<po3>> DBMS_OUTPUT.put_line('底工资。。。') ;
END ;
4. case-when
CASE有两种表达式:
a.
select u.id, u.realname, U.SEX,
( case u.sex
when 1 then '男'
when 2 then '女'
else '空的'
END
) 性别
from users u;
b.
CASE
WHEN condition1 THEN result1
WHEN condistion2 THEN result2
WHEN condistionN THEN resultN
ELSE default_result
END