`

Oracle一个简单的存储过程

阅读更多

Oracle一个简单的存储过程

/*定义过程参数*/
create or replace procedure snowlucky.graduateprocess(
tempzhengzhi in snowlucky.graduate.zhengzhi%type,
tempyingyu in snowlucky.graduate.yingyu%type,
tempzhuanye1 in snowlucky.graduate.zhuanye1%type,
tempzhuanye2 in snowlucky.graduate.zhuanye2%type,
tempzhuanye3 in snowlucky.graduate.zhuanye3%type,
temptotalscore in snowlucky.result.totalscore%type) as
/*定义graduaterecord为记录型变量,临时存放通过游标从graduate数据表中提取的记录*/
graduaterecord snowlucky.graduate%rowtype;
/*定义graduatetotalscore为数值型变量,统计总分*/
graduatetotalscore snowlucky.result.totalscore%type;
/*定义graduateflag为字符型变量,根据结果放入“落选”或“录取”,然后写入数据表result*/
graduateflag varchar2(4);
/*定义游标graduatecursor,存放的是所有的graduate数据表中的记录*/
cursor graduatecursor is
select * from snowlucky.graduate;
/*定义异常处理errormessage*/
errormessage exception;
/*开始执行*/
begin
/*打开游标*/
open graduatecursor;
/*如果游标没有数据,激活异常处理*/
if graduatecursor%notfound then
raise errormessage;
end if;
/*游标有数据,指针指向第一条记录,每执行fetch命令,就自动下移,循环执行到记录提取完毕为止*/
loop
fetch graduatecursor into graduaterecord;
/*计算总分*/
graduatetotalscore:=graduaterecord.yingyu+graduaterecord.zhengzhi+graduaterecord.zhuanye1+graduaterecord.zhuanye2+graduaterecord.zhuanye3;
/*判断单科和总分是否满足录取要求,若满足,graduateflag变量值为“录取”,否则为“落选”*/
if (graduaterecord.yingyu>=tempyingyu and
graduaterecord.zhengzhi>=tempzhengzhi and
graduaterecord.zhuanye1>=tempzhuanye1 and
graduaterecord.zhuanye2>=tempzhuanye2 and
graduaterecord.zhuanye3>=tempzhuanye3 and
graduatetotalscore>=temptotalscore) then
graduateflag:='录取';
else
graduateflag:='落选';
end if;
/*当游标数据提取完毕后,退出循环”*/
exit when graduatecursor%notfound;
/*向结果数据表result中插入处理后的数据*/
insert into snowlucky.result(bh,xm,lb,zhengzhi,yingyu,zhuanye1,zhuanye2,zhuanye3,totalscore,flag) values(graduaterecord.bh,graduaterecord.xm,graduaterecord.lb,graduaterecord.zhengzhi,graduaterecord.yingyu,graduaterecord.zhuanye1,graduaterecord.zhuanye2,graduaterecord.zhuanye3,graduatetotalscore,graduateflag);
end loop;
/*关闭游标*/
close graduatecursor;
/*提交结果*/
commit;
/*异常处理,提示错误信息*/
exception
when errormessage then
dbms_output.put_line('无法打开数据表');
/*程序执行结束”*/
end;

/*主程序mainprocess设计*/
/*定义6个入口变量,分别对应graduate数据表中的专业课和总分分数线*/
declare
  score1 number(4,1);
  score2 number(4,1);
  score3 number(4,1);
  score4 number(4,1);
  score5 number(4,1);
  scoretotal number(5,1);
/*将分数线赋值,在这里修改各值就代表不同的分数线*/
begin
  score1:=50;
  score2:=56;
  score3:=60;
  score4:=62;
  score5:=64;
  scoretotal:=325;
  /*调用处理过程*/
  snowlucky.graduateprocess(score1,score2,score3,score4,score5,scoretotal);
end;
      
 
分享到:
评论

相关推荐

    oracle的一个简单存储过程实例

    在这个“Oracle的一个简单存储过程实例”中,我们可以看到如何在Oracle环境中创建、调用和管理存储过程。下面将详细讲解这个主题。 首先,`c.sql`、`b.sql`和`student.sql`可能是包含存储过程定义的脚本文件。这些...

    oracle存储过程学习经典入门

    本文将从 Oracle 存储过程的基础知识开始,逐步深入到 Oracle 存储过程的高级应用,包括 Hibernate 调用 Oracle 存储过程和 Java 调用 Oracle 存储过程的方法。 Oracle 存储过程基础知识 Oracle 存储过程是 Oracle...

    oracle 存储过程 函数 dblink

    根据提供的部分代码示例,我们可以看到一个简单的存储过程`TESTA`被创建: ```sql CREATE OR REPLACE PROCEDURE TESTA( PARA1 IN VARCHAR2, PARA2 IN VARCHAR2 ) AS BEGIN INSERT INTO HYQ.B_ID (I_ID, I_NAME) ...

    Oracle定时执行存储过程

    oracle 是一个功能强大的关系型数据库管理系统,可以执行各种复杂的任务,其中包括定时执行存储过程。定时执行存储过程可以让 oracle 自动执行某些操作,而不需要人工干预。下面我们将详细讲解 oracle 中的定时执行...

    Python使用cx_Oracle调用Oracle存储过程的方法示例

    本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法。分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL。 首先,在数据库端创建简单的存储过程。 create or replace ...

    Oracle存储过程返回结果集

    本篇将深入探讨如何在Oracle存储过程中创建并返回一个结果集,并结合Java代码展示如何在应用程序中使用这个结果集。 首先,我们需要理解`OUT`参数的概念。在Oracle存储过程中,`IN`参数用于传递数据到过程,`OUT`...

    oracle存储过程-帮助文档

    它们提高了数据库性能,因为数据库只需解析和优化存储过程一次,而非每次调用时都进行。 2. **存储过程的分类** - **简单存储过程**:仅包含SQL语句。 - **复合存储过程**:包含PL/SQL块,包括控制结构(如循环、...

    oracle的存储过程如何返回结果集

    下面是一个简单的示例,展示如何创建一个存储过程来返回结果集: ```sql CREATE OR REPLACE PACKAGE pkg_test AS TYPE myrctype IS REF CURSOR; -- 定义 Ref Cursor 类型 PROCEDURE get(p_id NUMBER, p_rc OUT ...

    hibernate query调用oracle存储过程

    以下是一个简单的示例,展示了如何调用一个不带参数的Oracle存储过程: ```java Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); session....

    Oracle存储过程开发的要点

    一个简单的存储过程可能如下所示: ```sql CREATE OR REPLACE PROCEDURE skeleton IS BEGIN NULL; END; ``` 这里: - `CREATE OR REPLACE PROCEDURE` 创建或替换名为`skeleton`的存储过程。 - `IS` 开始PL/SQL块的...

    oracle存储过程实例

    Oracle存储过程是数据库管理系统中的一种重要特性,它允许开发者编写一系列SQL和PL/SQL语句,形成一个可重用的程序单元。存储过程在数据库中预先编译并存储,这样在执行时能提高效率,因为它避免了每次调用时的重新...

    jdbc连接oracle,执行存储过程,带数据库存储过程

    在给出的“简单的存储过程.txt”文件中,可能包含了一个示例存储过程的定义和如何通过JDBC调用它的Java代码。例如,一个存储过程可能用于插入数据: ```sql CREATE OR REPLACE PROCEDURE insert_user ( p_username...

    C#调用oracle方法(包括调用存储过程)

    1. **创建存储过程**:首先,在Oracle数据库中创建一个存储过程。 ```sql CREATE OR REPLACE PROCEDURE p_test ( p_in IN VARCHAR2, p_out OUT VARCHAR2 ) AS BEGIN -- 这里可以写入复杂的逻辑 p_out := '...

    oracle函数大全及存储过程语法 chm

    例如,以下是一个简单的存储过程示例: ```sql CREATE OR REPLACE PROCEDURE my_procedure(p_id NUMBER) AS v_name VARCHAR2(50); BEGIN SELECT name INTO v_name FROM employees WHERE id = p_id; DBMS_OUTPUT....

    ORACLE存储过程学习源码

    - **带有返回值的存储过程**:可以设置一个函数式存储过程,通过RETURN语句返回一个值。 4. **学习源码的步骤**: - **理解每个例子**:逐个分析提供的源码,理解每个存储过程的目的和实现方式。 - **分析结构**...

    oracle 定时任务,使用存储过程更新数据

    为了实现定时更新数据,我们需要编写一个存储过程,该过程包含必要的SQL更新语句。例如,以下是一个简单的示例: ```sql CREATE OR REPLACE PROCEDURE update_data AS BEGIN UPDATE your_table SET column = new_...

    oracle调用存储过程

    例如,创建一个简单的存储过程,接收两个参数并返回它们的和: ```sql CREATE OR REPLACE PROCEDURE add_numbers (p_num1 NUMBER, p_num2 NUMBER, OUT_RESULT OUT NUMBER) AS BEGIN OUT_RESULT := p_num1 + p_...

    润乾报表调用oracle存储过程案例说明

    以下是一个简单的存储过程示例,名为`TEST`,它接收两个输入参数`arg1`和`arg2`,并返回一个sys_refcursor类型的输出参数`v_out_result`: ```sql CREATE OR REPLACE PROCEDURE TEST (arg1 IN VARCHAR2, arg2 IN ...

    oracle 存储过程学习经典

    - **示例代码**: 设计一个存储过程,接收页码和每页记录数作为参数,返回对应页面的数据。 #### 十二、结论 - **总结**: Oracle存储过程是数据库中非常重要的组成部分,它不仅可以提高应用程序的性能,还可以简化...

    oracle 的函数、存储过程、游标、简单实例

    本主题将深入探讨Oracle中的几个核心概念:函数、存储过程、游标以及简单的实例,这些都是数据库管理员和开发人员日常工作中不可或缺的部分。 首先,我们来了解**Oracle函数**。函数是预定义的代码块,接受零个或多...

Global site tag (gtag.js) - Google Analytics