Oracle_PL-SQL_10
来源:互联网 发布:光启骗局知乎 编辑:程序博客网 时间:2024/05/16 18:25
PL-SQL: ProcedureLanguage
PL中的主要内容
java source、directory、procedure、function、package、trigger、view
1. 块结构
DECLARE /* *定义部分(定义变量、常量、复杂数据类型、游标) */BEGIN /* 执行部分(pl/sql语句) */ excetpion WHENOTHERSTHEN /* 异常处理部分(处理运行错误) */END;
在PL SQL 中,在test window里面可以对PL-SQL进行调试、查看结果等操作
注意点:
DECLAREBEGIN dbms_output.put_line(2 ** 3); dbms_output.put_line('''');END;
输出
8
‘
2. 变量和类型
PL-SQL中declare段申明的变量只能在内部使用。
PL-SQL中的类型和SQL中的类似,具体可以查看网上相关文档,这里不再赘述。
注意点:在PL中可以通过%TYPE关键字来定义变量的类型
Student_namestudens.username%TYPE;
3. 条件逻辑
在PL-SQL中,IF、THEN、ELSE、ELSIF和ENDIF等关键字是用于执行条件逻辑的。
例子:
DECLARE counter INTEGER := 3;BEGIN IF counter = 1THEN dbms_output.put_line('嘻嘻'); ELSIF counter = 2THEN dbms_output.put_line('哈哈'); ELSE dbms_output.put_line('呵呵'); ENDIF;END;
CASE WHEN THENDECLARE os INTEGER := 10;BEGIN CASE WHEN os = 10THEN dbms_output.put_line('XP'); WHEN os = 20THEN dbms_output.put_line('LINUX'); ENDCASE;END;
4. 循环
- 简单循环
要结束简单循环,可以使用EXIT或EXIT WHEN语句。EXIT立即结束,EXIT WHEN语句在指定条件出现时,结束循环。
DECLARE counter INTEGER := 0;BEGIN LOOP counter := counter + 1; --当WHEN条件成立的时候,跳出循环 EXITWHEN counter = 5; ENDLOOP; dbms_output.put_line(counter);END;
- WHILE循环
DECLARE counter INTEGER := 5;BEGIN --当WHILE条件不满足时,跳出循环 WHILE counter > 0LOOP counter := counter - 1; ENDLOOP; dbms_output.put_line(counter);END;
- FOR循环
DECLAREBEGIN FOR num INREVERSE1 .. 5LOOP dbms_output.put_line(num); ENDLOOP;END;
- GOTO语句(NOT RECOMENDED)
PL/SQL中GOTO语句是无条件跳转到指定的标号去的意思。语法如下:
GOTO label;......<<label>> /*标号是用<< >>括起来的标识符 */
注意,在以下地方使用是不合法的,编译时会出错误。
(1)跳转到非执行语句前面。
(2) 跳转到子块中。
(3) 跳转到循环语句中。
(4)跳转到条件语句中。
(5) 从异常处理部分跳转到执行。
(6)从条件语句的一部分跳转到另一部分
NULL语句
在PL/SQL 程序中,NULL语句是一个可执行语句,可以用 null 语句来说明“不用做任何事情”的意思,相当于一个占位符或不执行任何操作的空语句,可以使某些语句变得有意义,提高程序的可读性,保证其他语句结构的完整性和正确性。如:
DECLARE ...BEGIN ... IF v_num IS NULL THEN GOTO labelPrint; END IF; … <<labelPrint>> NULL; --不需要处理任何数据。END;
DECLARE v_emp_id employees.employee_id%TYPE; v_first_name employees.first_name%TYPE; v_salary employees.salary%TYPE; v_sal_raise NUMBER(3,2);BEGIN v_emp_id := &emp_id; SELECT first_name, salary INTO v_first_name, v_salary FROM employees WHERE employee_id = v_emp_id; IF v_salary <= 3000 THEN v_sal_raise := .10; DBMS_OUTPUT.PUT_LINE(v_first_name||'的工资是'||v_salary ||'、工资涨幅是'||v_sal_raise); ELSE
--使用NULL语句,增加程序的可读性,告诉程序员,IF ELSE外的业务逻辑。 NULL; END IF;END;
看一个例子,分别用3中循环,求1+2+3。。。100的和。
--普通循环/*DECLARE i INTEGER := 1; summation INTEGER:= 0;BEGIN LOOP summation :=summation + i; i := i + 1; EXIT WHEN i> 100; END LOOP; dbms_output.put_line(summation);END;*/--WHILE循环/*DECLARE i INTEGER := 1; summation INTEGER:= 0;BEGIN WHILE i < 101LOOP summation :=summation + i; i := i + 1; END LOOP; dbms_output.put_line(summation);END;*/--FOR循环/*DECLARE summation INTEGER:= 0;BEGIN FOR i IN 1 .. 100LOOP summation :=summation + i; END LOOP; dbms_output.put_line(summation);END;*/
5. 游标
DECLARE --申明变量 vename emp.ename%TYPE; vsal emp.sal%TYPE; --申明游标 CURSOR cur_emp IS SELECT ename, sal FROM emp;BEGIN --打开游标 OPEN cur_emp; LOOP --遍历提取 FETCH cur_emp INTO vename, vsal; EXITWHEN cur_emp%NOTFOUND; dbms_output.put_line('vEname=' || vename || ',vSal=' || vsal); ENDLOOP; -- 关闭游标 CLOSE cur_emp;END;
简化写法(利用FOR IN 语句)
DECLARE CURSOR cur_ename IS SELECT ename FROM emp;BEGIN FOR cur_person IN cur_ename LOOP dbms_output.put_line(cur_person.ename); ENDLOOP;END;
DECLARE CURSOR cur_ename IS SELECT ename FROM emp;BEGIN FOR cur_person IN cur_ename LOOP dbms_output.put_line(cur_person.ename); ENDLOOP;END;
- Oracle_PL-SQL_10
- Oracle_PL-SQL_JavaSource_13
- Oracle_PL/SQL
- Oracle_PL-SQL_JavaSource_13
- ORACLE_PL/SQL远程连接
- 【1】Oracle_PL/SQL
- Oracle_PL/SQl_基本语法
- Oracle_PL/SQL-游标
- Oracle_PL/SQL 存储过程
- oracle_PL/SQL基础
- Oracle_PL/SQL基础
- Oracle_PL/SQL的基本写法_BEGIN_END块结构及简单的事务实现
- Oracle_PL/SQL的基本写法_BEGIN_END块结构及简单的事务实现
- Oracle_PL/SQL的基本写法_BEGIN_END块结构及简单的事务实现
- 邂逅在华灯初上
- 好资源
- dll入门demo。
- SQL语句游标
- adb问题
- Oracle_PL-SQL_10
- Core Image Filter Reference
- linux下防火墙的简单设置 ufw
- lda symmetric lda aprior
- jdbc操作数据库公共类
- lucene
- 论坛交流信息
- Nagios安装部署与Cacti整合
- B树、B-树、B+树、B*树