declare
v_first_name varchar2(35);
v_last_name varchar2(35);
c_student_id constant number := 2223;
begin
select first_name, last_name
into v_first_name, v_last_name
from student
where student_id = c_student_id;
dbms_output.put_line('Student name: ' || v_first_name || ' ' || v_last_name);
exception
when no_data_found then
dbms_output.put_line('There is no student with student id '||c_student_id);
end;
BEGIN
INSERT INTO ZIPCODE (zip, city, state, created_by, created_date,
modified_by, modified_date)
VALUES ('10027', 'NEW YORK', 'NY', USER, SYSDATE, USER, SYSDATE);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
DECLARE
v_err_code NUMBER := SQLCODE;
v_err_msg VARCHAR2(100) := SUBSTR(SQLERRM, 1, 100);
BEGIN
DBMS_OUTPUT.PUT_LINE ('Error code: '||v_err_code);
DBMS_OUTPUT.PUT_LINE ('Error message: '||v_err_msg);
END;
END;
declare
--rowtype:行记录类型
vr_student student%rowtype;
begin
select *
into vr_student
from student
where student_id = 156;
--用“.”来访问行记录属性
dbms_output.put_line(vr_student.first_name || ' ' || vr_student.street_address || ' has an ID of 156');
exception
when no_data_found then
raise_application_error(-20001,'the student is not in the database');
end;
declare
cursor c_zip is -- 声明游标
select *
from zipcode;
vr_zip c_zip%rowtype; --游标行类型
begin
open c_zip; --打开游标
loop
fetch c_zip into vr_zip; --对游标集合内的每个数据行操作
exit when c_zip%notfound;
dbms_output.put_line(vr_zip.city);
end loop; -- loop结束,自动关闭游标
end;
DECLARE
v_sid student.student_id%TYPE;
CURSOR c_student IS
SELECT student_id
FROM student
WHERE student_id < 110;
BEGIN
OPEN c_student;
LOOP
FETCH c_student INTO v_sid;
EXIT WHEN c_student%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('STUDENT ID : '||v_sid);
END LOOP;
CLOSE c_student;
EXCEPTION
WHEN OTHERS
THEN
IF c_student%ISOPEN
THEN
CLOSE c_student;
END IF;
END;
DECLARE
CURSOR c_student_enroll IS
SELECT s.student_id, first_name, last_name,
COUNT(*) enroll,
(CASE
WHEN count(*) = 1 Then ' class.'
WHEN count(*) is null then
' no classes.'
ELSE ' classes.'
END) class
FROM student s, enrollment e
WHERE s.student_id = e.student_id
AND s.student_id <110
GROUP BY s.student_id, first_name, last_name;
r_student_enroll c_student_enroll%ROWTYPE;
BEGIN
OPEN c_student_enroll;
LOOP
FETCH c_student_enroll INTO r_student_enroll;
EXIT WHEN c_student_enroll%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('Student INFO: ID '||
r_student_enroll.student_id||' is '||
r_student_enroll.first_name|| ' ' ||
r_student_enroll.last_name||
' is enrolled in '||r_student_enroll.enroll||
r_student_enroll.class);
END LOOP;
CLOSE c_student_enroll;
EXCEPTION
WHEN OTHERS
THEN
IF c_student_enroll %ISOPEN
THEN
CLOSE c_student_enroll;
END IF;
END;
DECLARE
CURSOR c_group_discount IS
SELECT DISTINCT s.course_no
FROM section s, enrollment e
WHERE s.section_id = e.section_id
GROUP BY s.course_no, e.section_id, s.section_id
HAVING COUNT(*)>=8;
BEGIN
FOR r_group_discount IN c_group_discount LOOP
UPDATE course
SET cost = cost * .95
WHERE course_no = r_group_discount.course_no;
END LOOP;
COMMIT;
END;
DECLARE
CURSOR c_group_discount IS
SELECT DISTINCT s.course_no
FROM section s, enrollment e
WHERE s.section_id = e.section_id
GROUP BY s.course_no, e.section_id, s.section_id
HAVING COUNT(*)>=8;
v_course_no c_group_discount%rowtype;
BEGIN
open c_group_discount;
LOOP
fetch c_group_discount into v_course_no;
UPDATE course
SET cost = cost * .95
WHERE course_no = v_course_no.course_no;
END LOOP;
COMMIT;
END;
select count(*) from student;
select * from student;
select * from student where created_by = 'xls';
create or replace trigger student_bi
before insert on student
for each row
declare
v_student_id student.student_id%type;
begin
select student_id_seq.nextval
into v_student_id
from dual;
:new.student_id := v_student_id;
:new.created_by := user;
:new.created_date := sysdate;
:new.modified_by := user;
:new.modified_date := sysdate;
end;
INSERT INTO student (student_id, first_name, last_name, zip,
registration_date, created_by, created_date, modified_by,
modified_date)
VALUES (STUDENT_ID_SEQ.NEXTVAL, 'John', 'Smith', '00914', SYSDATE,
USER, SYSDATE, USER, SYSDATE);
INSERT INTO student (first_name, last_name, zip, registration_date)
VALUES ('John', 'Smith', '00914', SYSDATE);
create or replace trigger instructor_aud
after update or delete on instructor
declare
v_type varchar2(10);
pragma autonomous_transaction;
begin
if UPDATING then
v_type := 'UPDATE';
elsif deleting then
v_type := 'DELETE';
end if;
update statistics
set transaction_user = user,
transaction_date = sysdate
where table_name = 'INSTRUCTOR'
and transaction_name = v_type;
if sql%notfound then
insert into statistics
values('INSTRUCTOR', v_type, user, sysdate);
end if;
commit;
end;
UPDATE instructor
SET phone = '7181234567'
WHERE instructor_id = 101;
SELECT *
FROM statistics;
分享到:
相关推荐
ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...
### Oracle 9i PL/SQL程序设计笔记精要 #### PL/SQL基础知识概览 **标题与描述**:本文档围绕“Oracle 9i PL/SQL程序设计笔记”这一核心主题,深入探讨了PL/SQL语言的基础知识及其在Oracle 9i数据库环境中的应用。...
以下是对PL/SQL的学习笔记的详细解析: 1. **什么是PL/SQL语言** PL/SQL是Oracle数据库为数据库管理员和开发人员设计的一种编程语言。它扩展了SQL的功能,允许编写包含控制结构、变量、过程和函数的程序段,这些...
PL/SQL是Oracle数据库的一种编程语言,它结合了SQL(结构化查询语言)与过程编程语言的功能,使得数据库管理和应用程序开发更加便捷。本篇笔记主要涵盖了PL/SQL的基础语法和常用操作,包括检索数据、操纵数据以及SQL...
PL/SQL是Oracle公司开发的一种过程化SQL扩展,它是Oracle数据库的重要组成部分,用于在数据库服务器上编写存储过程、函数、触发器、包等可执行代码。PL/SQL可以处理复杂的数据操作和业务逻辑,支持编程结构如循环、...
### PL/SQL 个人笔记详解 #### 一、PL/SQL 块中可嵌入的 SQL 语句类型 PL/SQL(程序化SQL)是Oracle数据库的标准编程语言,它扩展了SQL的功能,允许在数据库环境中编写过程化的业务逻辑。在PL/SQL中,可以嵌入多种...
PL/SQL(Procedural Language for SQL)是Oracle数据库系统中的一种过程化编程语言,它结合了SQL的数据处理能力与传统过程化语言的控制结构,使得在数据库内部进行复杂逻辑处理成为可能。以下是PL/SQL能够实现的主要...
PL/SQL是一种高级的程序语言,主要用于Oracle数据库管理系统中。下面是PL/SQL数据库学习笔记的知识点总结。 一、基本原则 *瀑布模型:需求分析→设计(概要设计,详细设计:SQL语句,变量(初始值是多少,最终值...
oracle笔记pl/sql流程控制,有具体的代码案例,流程控制的知识点笔记!
PL/SQL,全称是Procedural Language/Structured Query Language,是Oracle数据库提供的一种结合了SQL语言和过程式编程的编程环境。它扩展了SQL的功能,使得开发人员能够编写复杂的数据库应用程序,处理事务、实现...
Oracle SQL和PL/SQL是数据库管理和编程的重要工具,主要用于处理Oracle数据库中的数据。这篇课堂笔记主要涵盖了基础的SQL查询语法和部分PL/SQL概念。 首先,SQL查询的基础是从数据库中选择数据。`SELECT`语句用于...
总的来说,“PL/SQL超级笔记”应该涵盖了从基本语法到高级特性的全面教程,通过学习,新手可以逐步掌握如何使用PL/SQL进行数据库编程,从而更好地管理和操作Oracle数据库。配合"oracle_ppt"中的PPT材料,学习效果会...
### PL/SQL培训笔记知识点概览 #### 一、PL/SQL简介与结构 PL/SQL,即Procedural Language for SQL,是Oracle数据库的一种内嵌式编程语言,结合了SQL的数据操作能力和过程化编程语言的控制结构。它提供了一种高效、...
### PL/SQL听课笔记 #### 一、PL/SQL简介 **PL/SQL**(Procedural Language for SQL)是一种专门为Oracle数据库设计的过程化语言扩展。它是在标准SQL基础上增加了一系列高级编程特性,如变量、控制结构、函数、...
在这个“我的PL/SQL学习笔记(一)”中,我们将探讨PL/SQL的基础知识,包括其语法结构、变量声明、流程控制以及如何与Oracle数据库中的数据进行交互。 首先,PL/SQL的基本结构分为声明部分、执行部分和异常处理部分...
PL/SQL Developer 12.0 数据库轻量工具功能区用户界面PL/SQL 开发人员现在使用新的功能区用户界面,而不是菜单用户界面:功能区上方的快速访问工具栏包含最常用的功能,因此它们始终立即可用。您可以根据自己的喜好...