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中死锁的处理
2010-05-25 12:16 7951、临时表 WITH TMPTABLE AS (sel ... -
oracle用merge更新表中数据
2009-11-16 18:58 2853Merge into是oracle从9i开始增加的一个语句,从 ... -
oracle中char(20)转换成varchar2(10)
2009-11-03 14:14 4811说明:mw_app.a表中字段b ,类型char(20),原来 ... -
给表或表中字段注释
2009-10-29 11:00 8231、给表添加注释 comment on table MW_S ... -
Oracle中将一个表中的字段值复制到另一个表的字段中
2009-10-22 19:29 5549说明: 1、mw_app.mwt_ud_pd_sb_r ... -
Oracle 创建序列号
2009-09-15 12:56 3013Oracle 创建序列号 1. 创建序列号里各参数 ... -
Oracle 多行转列函数
2009-09-13 20:36 4939Oracle中使用WMSYS.WM_CONCAT函数进行多行转 ... -
Oracle 单行函数
2009-09-13 20:15 1077三、Oracle 单行函数 ... -
Oracle 限制选择行
2009-09-13 20:11 771二、Oracle 限制选择行 ... -
Oracle选择行
2009-09-13 20:08 1004Oracle选择行 一、选择行 1. 简单的SELE ... -
Oracle SQL性能优化
2009-09-13 17:49 576Oracle SQL语句的性能优化 (1)选择最 ...
相关推荐
在这个“Oracle的一个简单存储过程实例”中,我们可以看到如何在Oracle环境中创建、调用和管理存储过程。下面将详细讲解这个主题。 首先,`c.sql`、`b.sql`和`student.sql`可能是包含存储过程定义的脚本文件。这些...
本文将从 Oracle 存储过程的基础知识开始,逐步深入到 Oracle 存储过程的高级应用,包括 Hibernate 调用 Oracle 存储过程和 Java 调用 Oracle 存储过程的方法。 Oracle 存储过程基础知识 Oracle 存储过程是 Oracle...
根据提供的部分代码示例,我们可以看到一个简单的存储过程`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 中的定时执行...
本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法。分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL。 首先,在数据库端创建简单的存储过程。 create or replace ...
本篇将深入探讨如何在Oracle存储过程中创建并返回一个结果集,并结合Java代码展示如何在应用程序中使用这个结果集。 首先,我们需要理解`OUT`参数的概念。在Oracle存储过程中,`IN`参数用于传递数据到过程,`OUT`...
它们提高了数据库性能,因为数据库只需解析和优化存储过程一次,而非每次调用时都进行。 2. **存储过程的分类** - **简单存储过程**:仅包含SQL语句。 - **复合存储过程**:包含PL/SQL块,包括控制结构(如循环、...
下面是一个简单的示例,展示如何创建一个存储过程来返回结果集: ```sql CREATE OR REPLACE PACKAGE pkg_test AS TYPE myrctype IS REF CURSOR; -- 定义 Ref Cursor 类型 PROCEDURE get(p_id NUMBER, p_rc OUT ...
以下是一个简单的示例,展示了如何调用一个不带参数的Oracle存储过程: ```java Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); session....
一个简单的存储过程可能如下所示: ```sql CREATE OR REPLACE PROCEDURE skeleton IS BEGIN NULL; END; ``` 这里: - `CREATE OR REPLACE PROCEDURE` 创建或替换名为`skeleton`的存储过程。 - `IS` 开始PL/SQL块的...
Oracle存储过程是数据库管理系统中的一种重要特性,它允许开发者编写一系列SQL和PL/SQL语句,形成一个可重用的程序单元。存储过程在数据库中预先编译并存储,这样在执行时能提高效率,因为它避免了每次调用时的重新...
在给出的“简单的存储过程.txt”文件中,可能包含了一个示例存储过程的定义和如何通过JDBC调用它的Java代码。例如,一个存储过程可能用于插入数据: ```sql CREATE OR REPLACE PROCEDURE insert_user ( p_username...
1. **创建存储过程**:首先,在Oracle数据库中创建一个存储过程。 ```sql CREATE OR REPLACE PROCEDURE p_test ( p_in IN VARCHAR2, p_out OUT VARCHAR2 ) AS BEGIN -- 这里可以写入复杂的逻辑 p_out := '...
例如,以下是一个简单的存储过程示例: ```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....
- **带有返回值的存储过程**:可以设置一个函数式存储过程,通过RETURN语句返回一个值。 4. **学习源码的步骤**: - **理解每个例子**:逐个分析提供的源码,理解每个存储过程的目的和实现方式。 - **分析结构**...
为了实现定时更新数据,我们需要编写一个存储过程,该过程包含必要的SQL更新语句。例如,以下是一个简单的示例: ```sql CREATE OR REPLACE PROCEDURE update_data AS BEGIN UPDATE your_table SET column = new_...
例如,创建一个简单的存储过程,接收两个参数并返回它们的和: ```sql CREATE OR REPLACE PROCEDURE add_numbers (p_num1 NUMBER, p_num2 NUMBER, OUT_RESULT OUT NUMBER) AS BEGIN OUT_RESULT := p_num1 + p_...
以下是一个简单的存储过程示例,名为`TEST`,它接收两个输入参数`arg1`和`arg2`,并返回一个sys_refcursor类型的输出参数`v_out_result`: ```sql CREATE OR REPLACE PROCEDURE TEST (arg1 IN VARCHAR2, arg2 IN ...
- **示例代码**: 设计一个存储过程,接收页码和每页记录数作为参数,返回对应页面的数据。 #### 十二、结论 - **总结**: Oracle存储过程是数据库中非常重要的组成部分,它不仅可以提高应用程序的性能,还可以简化...
本主题将深入探讨Oracle中的几个核心概念:函数、存储过程、游标以及简单的实例,这些都是数据库管理员和开发人员日常工作中不可或缺的部分。 首先,我们来了解**Oracle函数**。函数是预定义的代码块,接受零个或多...