例1:该存储过程是向xuesheng 表中插入一行数

 create or replace procedure student_proc_no is
begin
insert into Student(id,name,C语言,软件工程) values (3, 'wangwu', 90, 90);
commit;
end student_proc_no;

例2:带游标的存储过程,遍历游标将数据存储到另一个表中

 create or replace procedure Score  --新增学分存储过程
is
begin
declare
cursor CourseCursor is --建立游标
select Id,
name,
score,
from wangou.Course;
c_row CourseCursor%rowtype;
begin
for c_row in CourseCursor loop 遍历上面建立的游标 ----插入对账单信息
insert into ScoreList
(                
id,
CourseName,
score,
)
values
(s_ScoreList.Nextval,
c_row.name,
c_row.score
); end loop;
end;
End;

例3: 存储过程实例:该存储过程的功能是:查询Student表中Status状态等于0的数据,之后一一插入到StudentCourseList表中,每插入一条记录之后将状态改为1;其中插入的过程中需要根据游标中的数据查询到其他表中相关数据插入到StudentCourseList表中。

 create or replace procedure StudentCoursePro  --新增学生课程存储过程
is
TmpCourseId number(9);--变量
TmpCourseName varchar2(50);--变量
Tmpdirection int;--变量
begin
declare
cursor StudentCursor is --建立游标
select Id,
StudentCode,
substr(CourseCode, -5) as CourseCode,--截取查询到的字段,负数从最右边开始截取,5代表截取位数为
                                 --5位。-5:代表从左右边开始向前(向左)截取5位数
Direction,
           createtime,
Status
from wangou.Student
where Status = 0
for update of Status;
c_row StudentCursor%rowtype;
begin
for c_row in StudentCursor loop 遍历上面建立的游标
--查询课程信息
select id,
Name
into TmpCourseId,
TmpCourseName
from Course
where code = c_row.CourseCode;--c_row.字段:为表中某一行的该字段的值 --
if (c_row.direction='A') then --当direction等于‘A’时,Tmpdirection=1
Tmpdirection:=1;
else                --当direction不等于‘A’时,Tmpdirection=2
Tmpdirection:=2;
end if; ----生成学生课程列表信息
insert into wangou.StudentCourseList--注意该表的ID为自动oracle的sequence序列号,因为该表是在另一个方案名下,
(--id,                 --无法引用到sequence,所以在另一个方案下提前建立了触发器,代码在文章末尾处给出
Name,
CourseID,
CouseName,
TearcherId,
direction,
date,

)
values
(--s_StudentCourseList.Nextval,
Name,TmpCourseID, TmpCourseName,
(select id from Tearcher where StudentID=c_row.ID),--查找老师信息
Tmpdirection,
to_date(c_row.createtime,'yyyy-mm-dd hh24:mi:ss'),--将createtime时间转换为需要的时间格式


); ----更新对账单.处理状态 = 1(已处理)。
update wangou.Student    --wangou为方案名
set Status = 1
WHERE CURRENT OF StudentCursor;
end loop;
end;
End;

 触发器代码:

该触发器的功能是:当有数据插入到StudentCourseList表中之前,为该表的ID(即“:new.id”)预先给个值,

         值即为该表的序列号S_StudentCourseList.NEXTVAL

 create or replace trigger StudentCourseListTri
before insert on StudentCourseList --当有数据插入StudentList表之前
for each row
declare
nextid NUMBER;--变量
begin
SELECT S_StudentCourseList.NEXTVAL
  INTO nextid
  FROM dual;
:new.id:=nextid;
end StudentCourseListTri;

Oracle--存储过程学习进阶的更多相关文章

  1. Oracle存储过程学习使用

    存储过程创建语法: create or replace procedure 存储过程名(param1 in type,param2 out type) as 变量1 类型(值范围); 变量2 类型(值 ...

  2. ORACLE存储过程学习

    存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE ...

  3. Oracle 存储过程学习

    转自:http://blog.chinaunix.net/uid-20495387-id-174394.html http://www.cnblogs.com/rootq/articles/11000 ...

  4. Oracle存储过程学习备忘

    之前的项目使用存储过程很少,但在实际的项目中,存储过程的使用是必不可少的. 存储过程是一组为了完成特定功能的SQL 语句 集,经编译后存储在数据库中:存储过程创建后,一次编译在程序中可以多次调用,对安 ...

  5. Oracle 存储过程学习笔记

    1.存储过程简单实例 CREATE OR REPLACE PROCEDURE 存储过程名称 (参数in,参数out) AS -- 变量声明,每个声明用分号结束.可以在声明的同时初始化 name ); ...

  6. Oracle存储过程学习笔记

    SQL是一种语言! SQL是一种语言! SQL是一种语言! 个人理解:存储过程就相当于Java中的方法;声明变量区域就相当于java中的声明局部变量一样,只是放到一个指定区域定义了 一.先看一部分基础 ...

  7. oracle 存储过程学习感悟

    1.跟大白话差不多 2.if...then.... else ....写的比较多 3.调用存储过程命令:execute procedure_name 4.调用存储函数命令:select '0' str ...

  8. oracle存储过程学习---包的概念

    转自:http://www.iteye.com/topic/1111793 一.包的概念   类似于一个容器,能打包相应的Pl/SQL变量.常量.函数.过程.复合数据类型等元素到这个容器内.用来限制  ...

  9. Oracle RMAN 学习:演练进阶篇

    Oracle RMAN 学习:演练进阶篇 5 Rman备份演练进阶篇 5.1 是否选择增量备份 Backup命令生成的备份集中只备份了那些使用了的数据块,备份集实际大小已经较目标数据库的数据文件小了很 ...

  10. 用java调用oracle存储过程总结(转)

    //1.call+包名+存储过程名(传入.传出值用?) String str="{call SMSBUSINESS.deleteZhZMember(?,?,?)}"; //2.建立 ...

随机推荐

  1. 文件浏览器及数码相框 -2.3.2-freetype_arm-1

    交叉编译:tar xjf freetype-2.4.10.tar.bz2 ./configure --host=arm-linuxmakemake DESTDIR=$PWD/tmp install f ...

  2. 戴文的Linux内核专题:10配置内核(6)

    转自Linux中国 欢迎来到下一篇关于内核配置文章!还有大量的选项需要配置.这篇文章将主要讨论PCI和ACPI. 这里我们可以启用由ACPI控制的扩展坞和可移动驱动器槽的支持(Dock).记住,ACP ...

  3. tomcat http 文件下载

    tomcat作为http的下载服务器,网上有很多办法 但我认为最简单的是: 1.直接把文件放在 tomcat6/webapps/ROOT 目录下, 2.然后在网址中访问: http://120.194 ...

  4. poj 1797 Heavy Transportation(最短路径Dijkdtra)

    Heavy Transportation Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 26968   Accepted: ...

  5. java基础之 溢出

    堆溢出 堆(Heap)是Java存放对象实例的地方. 堆溢出可以分为以下两种情况,这两种情况都会抛出OutOfMemoryError:java heap space异常: 1.内存泄漏 内存泄漏是指对 ...

  6. [网络技术][转]PPTP协议解析

    PPTP协议大体上可以分为两部分:控制层连接和隧道,下面简要介绍两部分的功能.如果要详细了解PPTP协议请阅读RFC文档. 一. Control Connection Protol 控制层连接是基于T ...

  7. IE和火狐 差异

    1.JavaScript中 1)IE和FireFox中childNodes的差别: <head> <script type="text/javascript"&g ...

  8. 元素ID命名规范

    因为本框架默认所有内容都位于一个Document中,所以为元素命名为ID的时候需要做到唯一性,如果确实不可避免的会出现有重读ID的现象,需要操作当前页片(页面片段,就是子页面)的时候,尽量用: $.C ...

  9. android中正确导入第三方jar包

    android中正确导入第三方jar包 andriod中如果引入jar包的方式不对就会出现一些奇怪的错误. 工作的时候恰好有一个jar包需要调用,结果用了很长时间才解决出现的bug. 刚开始是这样引用 ...

  10. LOGISTIC REGRESSION

    In logistic regression we learn a family of functions