----------------------------------------------------------------------
DECLARE
conVerson constant VARCHAR2(20) := '1.0.01';
BEGIN
DBMS_OUTPUT.put_line(conVerson);
END;
----------------------------------------------------------------------
DECLARE
Database VARCHAR2(50) := 'Oracle 10g';
BEGIN
dbms_output.put_line(Database);
END;
----------------------------------------------------------------------
DECLARE
Database VARCHAR2(50);
BEGIN
Database := 'Oracle 11g';
dbms_output.put_line(Database);
END;
----------------------------------------------------------------------
DECLARE
Num INTEGER := 11;
BEGIN
IF Num < 0 THEN
dbms_output.put_line('负数');
ELSIF Num > 0 THEN
dbms_output.put_line('正数');
ELSE
dbms_output.put_line('0');
END IF;
END;
----------------------------------------------------------------------
DECLARE
varDAY INTEGER := 5;
Result VARCHAR2(20);
BEGIN
Result := CASE varDAY
WHEN 1 THEN
'日曜日'
WHEN 2 THEN
'火曜日'
WHEN 3 THEN
'水曜日'
WHEN 4 THEN
'木曜日'
WHEN 5 THEN
'金曜日'
WHEN 6 THEN
'土曜日'
WHEN 7 THEN
'月曜日'
ELSE
'数字越界'
END;
dbms_output.put_line(Result);
END;
----------------------------------------------------------------------
DECLARE
V_num INTEGER := 1;
V_sum INTEGER := 0;
BEGIN
LOOP
V_sum := V_sum + V_num;
dbms_output.put_line(V_num);
IF V_num = 10 THEN
EXIT;
END IF;
dbms_output.put_line('+');
V_num := V_num + 1;
END LOOP;
dbms_output.put_line('=');
dbms_output.put_line(V_sum);
END;
----------------------------------------------------------------------
DECLARE
V_num INTEGER := 1;
V_sum INTEGER := 0;
BEGIN
LOOP
V_sum := V_sum + V_num;
dbms_output.put_line(v_num);
EXIT WHEN V_num = 9;
dbms_output.put_line('+');
V_num := V_num + 1;
END LOOP;
dbms_output.put_line('=');
dbms_output.put_line(V_sum);
END;
----------------------------------------------------------------------
DECLARE
v_Num INTEGER := 1;
v_Sum INTEGER := 0;
BEGIN
WHILE v_Num <= 11 LOOP
v_Sum := v_Sum + v_Num;
dbms_output.put_line(v_Num);
IF v_Num < 11 THEN
dbms_output.put_line(' + ');
END IF;
v_Num := v_Num + 1;
END LOOP;
dbms_output.put_line('=');
dbms_output.put_line(v_Sum);
END;
----------------------------------------------------------------------
DECLARE
v_Num INTEGER;
v_Sum INTEGER := 0;
BEGIN
FOR v_Num IN 1 .. 3 LOOP
v_Sum := v_Sum + v_Num;
dbms_output.put_line(v_Num);
IF v_Num < 3 THEN
dbms_output.put_line('+');
END IF;
END LOOP;
dbms_output.put_line('=');
dbms_output.put_line(v_Sum);
END;
----------------------------------------------------------------------
DECLARE
x NUMBER;
BEGIN
x := 'a123';
EXCEPTION
WHEN VALUE_ERROR THEN
DBMS_OUTPUT.put_line('----- TYPE ERROR -----');
END;
----------------------------------------------------------------------
DECLARE
var_Username VARCHAR(40);
BEGIN
SELECT NAME INTO var_Username FROM EMPLOYEE WHERE GIVENNAME = 'Joe';
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.put_line('NO DATA');
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.put_line('TOO MANY DATA');
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('UNKNOWN ERROR');
END;
----------------------------------------------------------------------
DECLARE
BEGIN
DBMS_OUTPUT.put_line(ABS(-4));
DBMS_OUTPUT.put_line(CEIL(116.24));
DBMS_OUTPUT.put_line(CEIL(-112.75));
DBMS_OUTPUT.put_line(CEIL(0));
DBMS_OUTPUT.put_line(FLOOR(116.24));
DBMS_OUTPUT.put_line(FLOOR(-112.75));
DBMS_OUTPUT.put_line(FLOOR(0));
DBMS_OUTPUT.put_line(POWER(15, 4));
DBMS_OUTPUT.put_line(ROUND(123.456, 2));
DBMS_OUTPUT.put_line(ROUND(123.456, 1));
DBMS_OUTPUT.put_line(ROUND(123.456, 0));
DBMS_OUTPUT.put_line(ROUND(123.456, -1));
DBMS_OUTPUT.put_line(ROUND(123.456, -2));
DBMS_OUTPUT.put_line(ROUND(123.456, -3));
END;
----------------------------------------------------------------------
DECLARE
date1 VARCHAR2(20) := '2008-06-05';
date2 VARCHAR2(20) := '2008-10-05';
BEGIN
DBMS_OUTPUT.put_line(ASCII('ABC'));
DBMS_OUTPUT.put_line(SYSDATE);
DBMS_OUTPUT.put_line(TO_CHAR(SYSDATE));
DBMS_OUTPUT.put_line(LAST_DAY(SYSDATE));
DBMS_OUTPUT.put_line(MONTHS_BETWEEN(TO_DATE(date2, 'yyyy-mm-dd'),
TO_DATE(date1, 'yyyy-mm-dd')));
END;
----------------------------------------------------------------------
SELECT * FROM EMPLOYEE;
SELECT COUNT(ID) FROM EMPLOYEE;
SELECT MAX(ID) FROM EMPLOYEE;
SELECT MIN(ID) FROM EMPLOYEE;
----------------------------------------------------------------------
DECLARE
Ver NUMBER;
BEGIN
SELECT LENGTH(USERNAME) into Ver FROM EMP WHERE USERID = 1;
dbms_output.put_line(Ver);
END;
----------------------------------------------------------------------
DECLARE
DEPNAME AA_DEPARTMENTS.DEPARTMENT_NAME%TYPE;
BEGIN
SELECT DEPARTMENT_NAME INTO DEPNAME FROM AA_DEPARTMENTS WHERE DEPARTMENT_ID=10;
DBMS_OUTPUT.put_line(DEPNAME);
END;
----------------------------------------------------------------------
CREATE OR REPLACE FUNCTION f_compute_costproject_code(cbs_code IN varchar2)
RETURN varchar2 AS
res_costproject_code varchar(40);
BEGIN
res_costproject_code := case
-------------------
when cbs_code in
('0101', '0201', '0301', '0501') then
'01'
-------------------
when cbs_code in
('0102', '0202', '0302', '0502') then
'02'
-------------------
when cbs_code in
('0103', '0203', '0303', '0503') then
'03'
-------------------
when cbs_code in
('0106', '0206', '0306', '0506') then
'04'
-------------------
when cbs_code in
('0104', '0204', '0304', '0504') then
'05'
-------------------
when cbs_code in
('0105', '0205', '0305', '0505') then
'06'
-------------------
when cbs_code in
('0108', '0208', '0308', '0508') then
'07'
-------------------
when cbs_code in
('0107', '0207', '0307', '0507') then
'08'
-------------------
when cbs_code in ('0410', '9010') then
'other'
else
'none'
end;
RETURN res_costproject_code;
END;
分享到:
相关推荐
8. **索引和性能优化**:手册可能也会涉及如何利用索引来提高PL/SQL程序的执行效率,以及如何分析和优化SQL语句。 9. **并发和锁定**:在多用户环境下,理解并发控制和锁定机制是必要的。手册可能会讨论如何处理...
首先,PL/SQL是一种过程化语言,它允许用户定义变量、控制流程(如循环、条件语句)、处理异常,并且可以嵌入SQL查询,进行数据的增删改查操作。通过使用PL/SQL,数据库管理员和开发者可以更高效地管理和维护数据库...
在Oracle数据库中,PL/SQL提供了丰富的控制结构,如循环、条件判断,以及异常处理机制,使得开发者能够编写复杂的业务逻辑。例如,`IF...THEN...ELSIF...ELSE`语句用于实现条件分支,`WHILE`和`FOR`循环则可以处理...
7. **性能优化**:提供性能分析工具,如执行计划分析、SQL Tuning Advisor等,帮助优化SQL语句,提高数据库运行效率。 8. **版本控制集成**:与其他版本控制系统(如Git、SVN)无缝集成,便于版本管理和代码协同。 ...
- **基本语法与结构**:包括数据类型、变量声明、流程控制语句(如IF、CASE、LOOP、WHILE)、异常处理等。 #### 二、PL/SQL程序结构 - **块结构**:PL/SQL程序通常被组织成块,每个块由声明部分、执行部分和异常...
执行部分包含了SQL语句和流程控制结构,如循环、条件判断等;异常处理部分则用于捕获和处理运行时错误。 2. **变量和数据类型**:PL/SQL支持多种数据类型,包括数值型(NUMBER、BINARY_INTEGER、PLS_INTEGER)、...
过程是PL/SQL中一种用来封装逻辑的单元,它包含了一系列的SQL语句和PL/SQL代码,可以执行特定的任务。过程与匿名程序块的区别在于它具有名称和参数,能够被重复调用。创建过程的语法中涉及到参数模式,包括IN、OUT、...
PL/SQL(Procedural Language for SQL)是一种过程化语言,它结合了SQL的数据操纵功能和过程化语言的控制结构,使用户能够灵活地控制数据操作流程。作为Oracle数据库的核心组成部分之一,PL/SQL在数据库应用程序开发...
1. **基础语法**:理解PL/SQL的基本数据类型、变量声明、流程控制结构等。 2. **函数和过程**:掌握如何定义和调用自定义函数和过程。 3. **游标**:了解如何使用游标处理结果集。 4. **异常处理**:学习如何编写...
本章节主要介绍了 PL/SQL 程序设计的基础知识,包括 PL/SQL 的优点、运行 PL/SQL 程序、PL/SQL 块结构、PL/SQL 基本语法、PL/SQL 处理流程、异常处理、游标、存储过程和函数、触发器等。 PL/SQL 的优点包括: * ...
本文将讲述 PL/SQL 基础语法、结构和组件、以及如何设计并执行一个 PL/SQL 程序。 PL/SQL 的优点包括: * 高性能的基于事务处理的语言,能运行在任何 ORACLE 环境中,支持所有数据处理命令。 * 支持所有 SQL 数据...
4. **动态SQL**:探讨如何在PL/SQL中执行SQL语句,包括EXECUTE IMMEDIATE和PREPARE-EXECUTE-CLOSE模式,以及绑定变量的应用。 5. **包(PACKAGE)**:详细解释包的概念,包括公共和私有部分,以及如何通过包来组织...
PL/SQL,全称为Procedural Language/Structured Query Language,是Oracle数据库的一种扩展,它将SQL语句与过程式编程语言结合在一起,为数据库管理提供了更强大的功能。本压缩包"PL/SQL语法帮助"是专为初学者设计的...
5. **过程与函数**:过程是一组PL/SQL语句的集合,用于执行特定任务。函数与过程类似,但返回一个值。它们可以提高代码的复用性和模块化。 6. **异常处理**:PL/SQL提供了一个强大的异常处理机制,允许你定义和捕获...
1. **PL/SQL基础**:PL/SQL的基础语法,如变量声明、数据类型、流程控制语句(如IF-THEN-ELSIF,FOR循环,WHILE循环)、异常处理(BEGIN-EXCEPTION-END结构)等。 2. **函数与过程**:如何定义和调用用户自定义的...
1. **结构化编程**:PL/SQL支持流程控制语句,如IF-THEN-ELSE、CASE、WHILE和FOR循环,使得开发者能够编写复杂的逻辑。 2. **异常处理**:通过BEGIN...EXCEPTION块,PL/SQL提供了异常处理机制,能够捕获和处理运行...
7. **PL/SQL与SQL的交互**:说明如何在PL/SQL中执行SQL语句,包括动态SQL和嵌套SQL,以及如何处理查询结果。 8. **事务管理**:讨论事务的概念,事务的提交、回滚和保存点,以及并发控制和锁定机制。 9. **性能...
每条PL/SQL语句以分号结束,SQL语句可以跨多行。在一行中,可以放置多条语句,它们之间用分号分隔。块的开始可以是`DECLARE`或`BEGIN`,结束标记是`END`。 PL/SQL程序块有两种类型:**命名程序块**和**匿名程序块**...
2. **流程控制**:PL/SQL提供了多种流程控制结构,如条件语句(IF-THEN-ELSIF-ELSE)、循环(WHILE、FOR、LOOP)、CASE表达式,以及异常处理(EXCEPTION)。这些结构使得程序可以根据不同条件执行不同的代码段。 3....