最近要写一个存储过程。实现如下功能
一、短信平台上下行设置
判断8-9位是不是GM,13-14是不是PH,如果是,再判断18-22位是否是SMSUW,如果是的,判断后面是否有5个数字,如果是的,5个数字之和是否等于35。如果不是,下行10个wonderful world之一(不屏蔽的),否则,下发20个wonderful 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存储过程中使用临时表,包括会话级临时表和事务级临时表。 ### 会话级临时表 会话级临时表(Session-Level Temporary Tables)只在创建它的会话内可见,并且在会话结束时自动删除。...
在存储过程中,做简单动态查询需要使用 EXECUTE IMMEDIATE 语句或 DBMS_SQL 包来执行动态 SQL 语句。 Oracle 存储过程学习目录是学习 Oracle 存储过程的基础知识,了解 Oracle 存储过程的基本语法、基础知识和一些...
本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法。分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL。 首先,在数据库端创建简单的存储过程。 create or replace ...
以下是对“oracle存储过程解锁”这一主题的深入解析。 ### 标题:“oracle存储过程解锁” #### 解析: 在Oracle数据库中,存储过程是一种预先编译并存储在数据库中的SQL代码块,用于执行复杂的业务逻辑或数据处理...
3. **错误恢复**:通过在存储过程中使用事务,可以确保在遇到错误时,可以通过`ROLLBACK`回滚到事务开始前的状态,避免数据损坏。 ### 结论 Oracle事务与存储过程的结合为数据库应用程序提供了强大的工具,以确保...
使用Spring的JdbcTemplate调用Oracle的存储过程
oracle 存储过程导出excel oracle 存储过程导出excel oracle 存储过程导出excel oracle 存储过程导出excel oracle 存储过程导出excel
#### Oracle存储过程创建 首先,我们需要在Oracle数据库中创建一个存储过程。以下是一个示例存储过程`pkg_test`的创建脚本: ```sql CREATE OR REPLACE PACKAGE pkg_test AS TYPE myrctype IS REF CURSOR; ...
在这段Java代码中,我们使用了`CallableStatement`来调用Oracle存储过程`TESTA`。关键点包括: - `prepareCall`方法用于准备调用存储过程。 - 使用`setString`方法设置输入参数的值。 - 调用`execute`方法执行存储...
总的来说,"Oracle通过存储过程POST方式访问接口"涉及到数据库编程、网络通信和安全性等多个方面,需要综合运用PL/SQL和Oracle的网络工具。通过学习和实践,你可以构建出高效、安全的接口交互方案。
在 Delphi 中调用 Oracle 的存储过程返回数据集需要遵循一定的规则和格式,包括创建 Oracle 包和存储过程、使用 AdoConnection 和 AdoDataSet 组件连接到 Oracle 数据库、调用存储过程并返回数据集等步骤。
Oracle存储过程unwrap解密工具主要用于处理Oracle数据库中的加密存储过程。在Oracle数据库系统中,为了保护敏感代码或数据,开发人员有时会选择对存储过程进行加密。然而,当需要查看、调试或恢复这些加密的存储过程...
此外,对于Oracle存储过程,理解其基本概念和使用方法也是必要的。存储过程是预编译的SQL语句集合,可以封装复杂的业务逻辑,提高数据处理效率,并通过参数传递数据。在与帆软报表集成时,正确理解和调用存储过程能...
oracle分页存储过程,oracle分页存储过程
在描述中提到的“使用批处理进行oracle存储过程脚本的创建和更新的处理”,这可能意味着开发者使用批处理命令(如Windows的批处理文件`.bat`)来自动化执行创建或更新Oracle存储过程的任务。批处理文件可以包含一...
在存储过程中,可以使用动态SQL(`EXECUTE IMMEDIATE`)来执行在运行时构建的SQL语句,这在处理不确定的SQL结构时非常有用。 7. **包(Packages)**: Oracle推荐将相关的存储过程和函数组合成包,以便更好地管理...
### Oracle存储过程返回结果集详解 #### 一、概述 在Oracle数据库中,存储过程是一种重要的编程组件,它能够执行一系列SQL语句并处理复杂的业务逻辑。存储过程的一个常见应用场景是返回结果集(Record Set),这有...
oracle存储过程加密破解 0