`
mailsongfang
  • 浏览: 46690 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

oracle中存储过程的使用

阅读更多

最近要写一个存储过程。实现如下功能

一、短信平台上下行设置

判断8-9位是不是GM13-14是不是PH,如果是,再判断18-22位是否是SMSUW,如果是的,判断后面是否有5个数字,如果是的,5个数字之和是否等于35。如果不是,下行10wonderful world之一(不屏蔽的),否则,下发20wonderful world之一(需要屏蔽)。

 

我这里首先是实现判断输入的字符串中有没有5个数字。数字之和是不是等于35.

其代码具体实现如下

CREATE OR REPLACE PROCEDURE P_SUB_STR(I_STR IN VARCHAR2,
                                      O_STR OUT VARCHAR2) IS
  --I_STR 输入字符串,O_STR 校验返回结果                      
  V_SUM   NUMBER; --存在数字时,数字的总和
  V_COUNT NUMBER; --存在多少个数字,
  V_DIG   NUMBER; --0.。9数字
BEGIN
  V_DIG   := 0;
  V_SUM   := 0;
  V_COUNT := 0;
  O_STR   := '不存在正确的数据组合';
  IF I_STR IS NOT NULL THEN
    LOOP
      EXIT WHEN V_DIG > 9;
      IF INSTR(I_STR, TO_CHAR(V_DIG)) != 0 THEN
        V_SUM   := V_SUM + substr(I_STR,INSTR(I_STR, TO_CHAR(V_DIG)),1);
        V_COUNT := V_COUNT + 1;
      END IF;
      V_DIG := V_DIG +1;
    END LOOP;
 
    IF V_COUNT = 5 AND V_SUM = 35 THEN
      O_STR := '存在正确的数据组合';
    ELSE
      O_STR := '不存在正确的数据组合';
    END IF;
  END IF;

EXCEPTION
  WHEN OTHERS THEN
    O_STR := '不存在正确的数据组合';
END P_SUB_STR;

 

然后再存储过程调用存储过程

具体代码如下

CREATE OR REPLACE PROCEDURE TEST(MSG IN VARCHAR2,SENDMSG OUT VARCHAR2) AS
                 --  VARCHAR2(4000);
  RMSGBYJESSICA           VARCHAR2(300) := 'Hi,I am Jessica';
  RMSG44MMODEUNIFUNACTIVE VARCHAR2(300) := 'I am not happy';
  RMSGERROR               VARCHAR2(300) := 'Error';
  SMSG                    VARCHAR2(4000);
  STATUS                  VARCHAR2(200);
BEGIN
  IF (MSG IS NULL) OR (TRIM(MSG) = '') THEN
    RETURN;
  ELSE
    SMSG := MSG;
    IF (SUBSTR(TRIM(SMSG), 16, 5) = 'smsuw') THEN
      P_SUB_STR(SUBSTR(TRIM(SMSG), 19, 15), STATUS);   --调用存储过程
      IF (STATUS = 'success') THEN
        --SENDMSG := RMSGBYJESSICA;
          select wcontent into SENDMSG  from (select wcontent from zf_xp_mt_wow w where w.wtype=1 order by dbms_random.value) where rownum=1;   --输出的语句为查询 zf_xp_mt_wow 表中类型为1的随机的wcontent 内容。
         ELSE
       --SENDMSG := RMSG44MMODEUNIFUNACTIVE;
          select wcontent into SENDMSG  from (select wcontent from zf_xp_mt_wow w where w.wtype=2 order by dbms_random.value) where rownum=1;

      END IF;
    ELSE
      SENDMSG := RMSGERROR;
    END IF;
  END IF;
END TEST;

commit;

drop procedure test;

 

分享到:
评论

相关推荐

    Oracle存储过程中使用临时表

    本篇文章将深入探讨如何在Oracle存储过程中使用临时表,包括会话级临时表和事务级临时表。 ### 会话级临时表 会话级临时表(Session-Level Temporary Tables)只在创建它的会话内可见,并且在会话结束时自动删除。...

    oracle存储过程学习经典入门

    在存储过程中,做简单动态查询需要使用 EXECUTE IMMEDIATE 语句或 DBMS_SQL 包来执行动态 SQL 语句。 Oracle 存储过程学习目录是学习 Oracle 存储过程的基础知识,了解 Oracle 存储过程的基本语法、基础知识和一些...

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

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

    oracle存储过程解锁

    以下是对“oracle存储过程解锁”这一主题的深入解析。 ### 标题:“oracle存储过程解锁” #### 解析: 在Oracle数据库中,存储过程是一种预先编译并存储在数据库中的SQL代码块,用于执行复杂的业务逻辑或数据处理...

    oracle 事务 回滚 存储过程

    3. **错误恢复**:通过在存储过程中使用事务,可以确保在遇到错误时,可以通过`ROLLBACK`回滚到事务开始前的状态,避免数据损坏。 ### 结论 Oracle事务与存储过程的结合为数据库应用程序提供了强大的工具,以确保...

    使用Spring的JdbcTemplate调用Oracle的存储过程

    使用Spring的JdbcTemplate调用Oracle的存储过程

    oracle 存储过程导出excel

    oracle 存储过程导出excel oracle 存储过程导出excel oracle 存储过程导出excel oracle 存储过程导出excel oracle 存储过程导出excel

    delphi调用Oracle的存储过程

    #### Oracle存储过程创建 首先,我们需要在Oracle数据库中创建一个存储过程。以下是一个示例存储过程`pkg_test`的创建脚本: ```sql CREATE OR REPLACE PACKAGE pkg_test AS TYPE myrctype IS REF CURSOR; ...

    oracle 存储过程 函数 dblink

    在这段Java代码中,我们使用了`CallableStatement`来调用Oracle存储过程`TESTA`。关键点包括: - `prepareCall`方法用于准备调用存储过程。 - 使用`setString`方法设置输入参数的值。 - 调用`execute`方法执行存储...

    oracle通过存储过程POST方式访问接口

    总的来说,"Oracle通过存储过程POST方式访问接口"涉及到数据库编程、网络通信和安全性等多个方面,需要综合运用PL/SQL和Oracle的网络工具。通过学习和实践,你可以构建出高效、安全的接口交互方案。

    Delphi中调用oracle的存储过程返回数据集

    在 Delphi 中调用 Oracle 的存储过程返回数据集需要遵循一定的规则和格式,包括创建 Oracle 包和存储过程、使用 AdoConnection 和 AdoDataSet 组件连接到 Oracle 数据库、调用存储过程并返回数据集等步骤。

    oracle存储过程unwrap解密工具.zip

    Oracle存储过程unwrap解密工具主要用于处理Oracle数据库中的加密存储过程。在Oracle数据库系统中,为了保护敏感代码或数据,开发人员有时会选择对存储过程进行加密。然而,当需要查看、调试或恢复这些加密的存储过程...

    帆软报表Oracle存储过程解决storeParameter1参数试用插件

    此外,对于Oracle存储过程,理解其基本概念和使用方法也是必要的。存储过程是预编译的SQL语句集合,可以封装复杂的业务逻辑,提高数据处理效率,并通过参数传递数据。在与帆软报表集成时,正确理解和调用存储过程能...

    oracle分页存储过程

    oracle分页存储过程,oracle分页存储过程

    pb中执行oracle存储过程脚本

    在描述中提到的“使用批处理进行oracle存储过程脚本的创建和更新的处理”,这可能意味着开发者使用批处理命令(如Windows的批处理文件`.bat`)来自动化执行创建或更新Oracle存储过程的任务。批处理文件可以包含一...

    oracle调用存储过程

    在存储过程中,可以使用动态SQL(`EXECUTE IMMEDIATE`)来执行在运行时构建的SQL语句,这在处理不确定的SQL结构时非常有用。 7. **包(Packages)**: Oracle推荐将相关的存储过程和函数组合成包,以便更好地管理...

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

    ### Oracle存储过程返回结果集详解 #### 一、概述 在Oracle数据库中,存储过程是一种重要的编程组件,它能够执行一系列SQL语句并处理复杂的业务逻辑。存储过程的一个常见应用场景是返回结果集(Record Set),这有...

    oracle存储过程加密破解

    oracle存储过程加密破解 0

Global site tag (gtag.js) - Google Analytics