`
yxsylyh
  • 浏览: 35078 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论

Oracle 数据库创建存储过程的SQL语句

阅读更多

基本语法记的不扎实,总是忘,这里做个总结,以后查询起来方便。

 

一、创建存储过程

 

create or replace procedure proc_insert(departno in number) is
begin
  declare 
    cursor cur_insert is select * from emp where deptno = departno;
    rec emp%rowtype;
  begin
    open cur_insert;
    loop
      fetch cur_insert into rec;
      exit when cur_insert%notfound;
      --dbms_output.put_line('empno=' || rec.empno);
      insert into emp_new values (rec.EMPNO,rec.ENAME,rec.JOB,rec.MGR,rec.HIREDATE,rec.SAL,rec.COMM,rec.DEPTNO);
      commit;
    end loop;
    exception
    when others then
      rollback;
  end;
end proc_insert;

 

网上看到一个例子,连错误处理都有,保存下来,以备后查。

--创建存储过程
CREATE OR REPLACE PROCEDURE xxxxxxxxxxx_p
(
   --参数IN表示输入参数,
    --OUT表示输入参数,类型可以使用任意Oracle中的合法类型。
   is_ym  IN CHAR
)
AS
--定义变量
vs_msg   VARCHAR2(4000);   --错误信息变量
vs_ym_beg  CHAR(6);      --起始月份
vs_ym_end  CHAR(6);      --终止月份
vs_ym_sn_beg CHAR(6);     --同期起始月份
vs_ym_sn_end CHAR(6);     --同期终止月份

--定义游标(简单的说就是一个可以遍历的结果集)
CURSOR cur_1 IS
  SELECT area_code,CMCODE,SUM(rmb_amt)/10000 rmb_amt_sn,SUM(usd_amt)/10000 usd_amt_sn
  FROM BGD_AREA_CM_M_BASE_T
    WHERE ym >= vs_ym_sn_beg
       AND ym <= vs_ym_sn_end
   GROUP BY area_code,CMCODE;

BEGIN
--用输入参数给变量赋初值,用到了Oralce的SUBSTR TO_CHAR ADD_MONTHS TO_DATE 等很常用的函数。
vs_ym_beg := SUBSTR(is_ym,1,6);
vs_ym_end := SUBSTR(is_ym,7,6);
vs_ym_sn_beg := TO_CHAR(ADD_MONTHS(TO_DATE(vs_ym_beg,'yyyymm'), -12),'yyyymm');
vs_ym_sn_end := TO_CHAR(ADD_MONTHS(TO_DATE(vs_ym_end,'yyyymm'), -12),'yyyymm');
--先删除表中特定条件的数据。
DELETE FROM xxxxxxxxxxx_T WHERE ym = is_ym;
  --然后用内置的DBMS_OUTPUT对象的put_line方法打印出影响的记录行数,其中用到一个系统变量SQL%rowcount
DBMS_OUTPUT.put_line('del上月记录='||SQL%rowcount||'条');

INSERT INTO xxxxxxxxxxx_T(area_code,ym,CMCODE,rmb_amt,usd_amt)
SELECT area_code,is_ym,CMCODE,SUM(rmb_amt)/10000,SUM(usd_amt)/10000
FROM BGD_AREA_CM_M_BASE_T
  WHERE ym >= vs_ym_beg
  AND ym <= vs_ym_end
GROUP BY area_code,CMCODE;

DBMS_OUTPUT.put_line('ins当月记录='||SQL%rowcount||'条');
--遍历游标处理后更新到表。遍历游标有几种方法,用for语句是其中比较直观的一种。
FOR rec IN cur_1 LOOP
  UPDATE xxxxxxxxxxx_T
  SET rmb_amt_sn = rec.rmb_amt_sn,usd_amt_sn = rec.usd_amt_sn
   WHERE area_code = rec.area_code
   AND CMCODE = rec.CMCODE
   AND ym = is_ym;
END LOOP;

COMMIT;
--错误处理部分。OTHERS表示除了声明外的任意错误。SQLERRM是系统内置变量保存了当前错误的详细信息。
EXCEPTION
   WHEN OTHERS THEN
      vs_msg := 'ERROR IN xxxxxxxxxxx_p('||is_ym||'):'||SUBSTR(SQLERRM,1,500);
   ROLLBACK;
   --把当前错误记录进日志表。
   INSERT INTO LOG_INFO(proc_name,error_info,op_date)
   VALUES('xxxxxxxxxxx_p',vs_msg,SYSDATE);
   COMMIT;
   RETURN;
END; 

 

分享到:
评论

相关推荐

    Oracle数据库创建存储过程和触发器

    Oracle 数据库创建存储过程和触发器 Oracle 数据库创建存储过程和触发器是高级数据库开发设计的重要组成部分。存储过程和触发器是一种特殊类型的数据库对象,它们可以实现复杂的业务逻辑和数据处理操作。 存储过程...

    oracle利用批处理文件执行SQL语句,bat连接oracle数据库并执行语句

    在这个场景中,我们可以利用批处理文件来简化Oracle数据库的操作,如删除用户、创建用户、创建表和触发器,以及执行其他SQL语句。 首先,我们需要了解如何在批处理文件中连接Oracle数据库。这通常通过Oracle的...

    存储过程中怎么动态执行sql语句

    “存储过程中怎么动态执行SQL语句”这一标题表明文章将介绍如何在Oracle数据库的存储过程中编写能够动态执行的SQL语句。动态SQL是指在运行时才能确定其具体内容的SQL语句,它允许用户根据不同的条件构造不同的查询或...

    数据库 创建索引 sql oracle

    "数据库创建索引SQL Oracle" 数据库索引是数据库性能优化的重要手段之一。创建索引可以提高查询速度,降低数据库的负载,提高数据的安全性。本文将详细介绍数据库创建索引的原则、分类、创建方法、管理和优化等方面...

    oracle到sqlserver存储过程语法转换

    ### Oracle到SQL Server存储过程...在进行数据库迁移时,开发者需要仔细分析现有的Oracle存储过程,然后根据SQL Server的语法特点进行相应的转换。此外,还应考虑到性能优化等问题,确保迁移后的应用程序能够高效运行。

    oracle 数据库 plsql 存储过程

    ##### 创建存储过程 要创建一个存储过程,首先需要具备`CREATE PROCEDURE`权限。如果希望其他用户也能使用该存储过程,则还需要`CREATE ANY PROCEDURE`权限。 **语法**: ```sql CREATE [OR REPLACE] PROCEDURE ...

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

    在Oracle数据库中,存储过程是一组预编译的SQL语句和PL/SQL块,可以在数据库中存储并重复使用,提高代码的复用性和执行效率。 连接Oracle数据库通常涉及以下步骤: 1. 导入JDBC驱动:在Java项目中,我们需要添加...

    Oracle教案 Oracle 存储过程 游标 SQL语句 PL/SQL

    Oracle 教案:深入理解 Oracle 存储过程、游标与 SQL 语句及 PL/SQL ...通过深入学习和实践,你将能够熟练掌握 Oracle 存储过程、游标和 SQL 语句,为在实际工作中构建高效稳定的企业级数据库应用打下坚实基础。

    vb.net操作Oracle数据库增删改查以及存储过程调用1

    VB.NET 操作 Oracle 数据库增删改查以及存储过程调用 在本篇文章中,我们将详细介绍如何使用 VB.NET 操作 Oracle 数据库,包括增删改查操作以及存储过程的调用。 VB.NET 操作 Oracle 数据库的准备工作 在开始操作...

    ORACLE数据库常用的SQL语句[文].pdf

    ORACLE数据库常用的SQL语句 ORACLE数据库是目前最流行的关系数据库管理系统之一,SQL语句是数据库管理的基础。本资源提供了ORACLE数据库中常用的SQL语句,包括用户管理、权限管理、表管理等多个方面的操作。 一、...

    oracle 数据库的学习资料, sql语句的详细学习资料

    本压缩包提供了丰富的Oracle SQL学习资料,涵盖了SQL的基础到高级用法,以及专门针对Oracle数据库的SQL性能调优。 在“Oracle高性能SQL调整.pdf”这份文档中,你可以深入学习如何优化SQL查询以提升数据库性能。这...

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

    1. **创建存储过程**:在Oracle中,存储过程是一组预先编译好的SQL和PL/SQL语句,可以接受参数并返回结果。为了实现定时更新数据,我们需要编写一个存储过程,该过程包含必要的SQL更新语句。例如,以下是一个简单的...

    sqlserver自动生成sql语句工具sqlserver转oracle

    描述中提到的"sqlserver转oracle"则是指将SQL Server数据库的内容迁移到Oracle数据库的过程。这个过程涉及到SQL语法的转换,因为SQL Server和Oracle虽然都遵循SQL标准,但各自的语法特性和函数库有所不同。例如,SQL...

    基于Oracle数据库的SQL语句优化

    ### 基于Oracle数据库的SQL语句优化 #### 引言 Oracle数据库是由甲骨文公司开发的一款关系型数据库管理系统,在当前的数据库市场中占据着重要的地位。它广泛应用于商业、政府等领域,具备强大的数据处理能力和高效...

    oracle 数据库 scott.sql 范例表

    这些表通常用于学习SQL语句和数据库管理概念。SCOTT用户的默认用户名为"scott",密码为"tiger"。 3. "scott.sql"文件: 这个文件是一个SQL脚本,包含创建SCOTT用户表的DDL(数据定义语言)语句和可能的数据插入...

    oracle数据库 存储过程

    在Oracle数据库中,存储过程是一种重要的数据库对象,它允许开发者将一组SQL语句和控制流程语句封装在一起,形成可重复使用的代码块。存储过程不仅提高了代码的重用性,还增强了数据处理的安全性和效率。下面,我们...

    数据库oracle中PLSQL语句简介及使用方法的举例说明

    PL/SQL是Oracle数据库的核心组成部分,用于创建复杂的业务逻辑、存储过程、触发器、函数以及数据库应用程序。 一、PL/SQL的基本结构 PL/SQL由三部分组成:声明部分、执行部分和异常处理部分。声明部分用于声明变量...

    (C#)Oracle数据库操作类(操作sql语句)

    - `OracleCommand`是Oracle数据库操作的核心,负责执行SQL语句、存储过程等。 - 它包含`CommandText`(SQL语句或存储过程名)、`CommandType`(文本、存储过程、表名等)、`Connection`(数据库连接)、`...

    Oracle自动备份存储过程脚本及过程详解

    这里使用了`CASE`语句来构建创建或替换存储过程的SQL语句。 #### 三、执行SQL脚本 在Windows环境下,可以通过命令行工具(CMD)来执行这个SQL脚本,以验证其正确性。 **步骤:** 1. 打开命令提示符窗口。 2. 输入...

    Oralce数据库SQL和pl_sql实例教程

    Oracle数据库是世界上最流行的数据库管理系统之一,SQL(Structured Query Language)是用于管理关系数据库的标准语言,而PL/SQL是Oracle数据库特有的编程语言,扩展了SQL的功能,使得能够编写复杂的存储过程和...

Global site tag (gtag.js) - Google Analytics