oracle kmp

CREATE OR REPLACE PACKAGE KMP_ALGOR_PKG

AS

TYPE next_arr_tt IS TABLE OF INT INDEX BY PLS_INTEGER;

PROCEDURE match_str(org_str VARCHAR2, pat_str VARCHAR2);

FUNCTION  get_pre_arr(pat_st VARCHAR2) RETURN next_arr_tt;

END kmp_algor_pkg;

CREATE OR REPLACE PACKAGE BODY KMP_ALGOR_PKG

AS

PROCEDURE match_str(org_str VARCHAR2, pat_str VARCHAR2)

AS

pat_next_arr next_arr_tt := get_pre_arr(pat_st => pat_str);

k INT := 0;

seq_cnt INT := 0;

BEGIN

FOR i IN 1..length(org_str) LOOP

WHILE(k > 0 AND substr(org_str, i, 1) <> substr(pat_str, k + 1, 1)) LOOP

k := pat_next_arr(k-1);

END LOOP;

IF(substr(pat_str, k + 1, 1) = substr(org_str, i, 1)) THEN

k := k + 1;

END IF;

IF(k = length(pat_str)) THEN

seq_cnt := seq_cnt + 1;

dbms_output.put_line(‘the ‘||pat_str||‘  ‘||seq_cnt||‘th match found in ‘||org_str||‘ at index ‘||(i - k + 1));

k := pat_next_arr(k - 1);

END IF;

END LOOP;

IF(seq_cnt = 0) THEN

dbms_output.put_line(‘no match found‘);

END IF;

END match_str;

FUNCTION  get_pre_arr(pat_st VARCHAR2) RETURN next_arr_tt

AS

ret_next_arr next_arr_tt;

k INT := 0;

BEGIN

ret_next_arr(0) := 0;

FOR umark IN 1..length(pat_st) - 1 LOOP

WHILE(k > 0 AND substr(pat_st, umark + 1 , 1) <> substr(pat_st, k + 1, 1)) LOOP

k := ret_next_arr(k - 1);

END LOOP;

IF(substr(pat_st, k + 1, 1) = substr(pat_st, umark + 1, 1)) THEN

k := k + 1;

END IF;

ret_next_arr(umark) := k;

END LOOP;

RETURN ret_next_arr;

END get_pre_arr;

END kmp_algor_pkg;

时间: 2024-10-01 04:50:51

oracle kmp的相关文章

oracle安装故障:完美解决xhost +报错: unable to open display “”

oracle安装 先切换到root用户,执行xhost + 然后再切换到oracle用户,执行export DISPLAY=:0.0 出现乱码执行export LANG=US_en 在这里给大家介绍下两种情况的常见问题: 一种是本地运行的命令,另一种则是远程ssh命令安装. DISPLAY科普 DISPLAY变量是用来设置将图形显示到何处.比如CENTOS,你用图形界面登录进去,DISPLAY自动设置为DISPLAY=:0.0表示显式到本地监视器,那么通过终端工具(例如:xshell)进去,运行

Sqlserver通过链接服务器访问Oracle的解决办法

转自http://blog.sina.com.cn/s/blog_614b6f210100t80r.html 一.创建sqlserver链接服务(sqlserver链接oracle)  首先sqlserver 链接oracle可以通过两个访问接口: “MSDAORA” 和“OraOLEDB.Oracle” 1.“MSDAORA”访问接口是由Microsoft OLE DB Provider for Oracle提供的,这里建议不使用此接口进行链接.通过该访问接口建立的链接服务器在进行查询orac

win7 64位系统 PB连接oracle数据库出现“oracle library oci.dll could not be loaded”问题的解决方法

今天与大家分享一个自己的学习笔记,希望能给遇到同样问题的人带来帮助. 不知道大家在win7 64位系统下用 PB连接oracle数据库时,是否遇到过“oracle library oci.dll could not be loaded”问题. 今天,在win7 64位系统下用 PB连接oracle数据库时,一直出现上述错误,在百度上找了很久,都没有找到一个完整的解决方案,咨询了很多人,(他们都说是我的PB和oracle没装好,但我装的时候没出现任何问题,一切都很顺利,而且PB和oracle都能正

Oracle 10g通过创建物化视图实现不同数据库间表级别的数据同步

摘自:http://blog.csdn.net/javaee_sunny/article/details/53439980 目录(?)[-] Oracle 10g 物化视图语法如下 实例演示 主要步骤 在A节点创建原表和物化视图日志 在B节点创建连接A节点的远程链接 在B节点处创建目标表和与目标表名称相同的物化视图 在B节点处刷新物化视图 升级采用存储过程定时任务JOB方式定时刷新物化视图 进一步优化 文章更新记录 参考文章 Oracle 10g 物化视图语法如下: create materia

Oracle静默安装

测试CentOS 6.5_x64下静默安装Oracle 11g R2数据库 [一.下载地址] http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html Oracle 11g 联机文档: http://www.oracle.com/pls/db112/homepage [二.系统要求] 内存:1G(官方最低要求1G) 硬盘:40G(企业版安装所需4.29G和1.7G数据文件) 检查的命令 内

ORACLE实际执行计划与预估执行计划不一致性能优化案例

  在一台ORACLE服务器上做巡检时,使用下面SQL找出DISK_READ最高的TOP SQL分析时,分析过程中,有一条SQL语句的一些反常现象,让人觉得很奇怪: SELECT SQL_ID,        SQL_TEXT,        DISK_READS,        BUFFER_GETS,        PARSING_SCHEMA_NAME,        EXECUTIONS FROM   V$SQLAREA ORDER  BY DISK_READS DESC; 在SQL D

PL/SQL developer 连接oracle数据库报错“initialization error could not load oci.dll”

声明:PL/SQL 版本:PL/SQL Developer 9.0.6 (http://files.allroundautomations.com/plsqldev906.exe) 报错提示如图: 原因:PL/SQL只对32位OS进行支持,解决方法是额外加载一个oci.dll文件 解决办法:1.下载OCI.DLL相关库文件.地址: (需注册Oracle账号) http://www.oracle.com/technetwork/topics/winsoft-085727.html ----->  

20、oracle用户管理恢复

下面会一一讲解控制文件.redo文件及非归档模式.归档模式数据文件丢失的情况下,如何恢复数据? (1)控制文件(controlfile)丢失 在做恢复实验之前,先备份好数据. 案例1.模拟一个控制文件丢失 select name from v$controlfile; SQL> select name from v$controlfile; NAME -------------------------------------------------------------------------

oracle数据库(新建数据库)超小白篇

用过Mysql.sqlserver.Oracle 不知道有没有比oracle建库还复杂的 显示:win10系统 1.找到文件夹Oracle-OraDb10g_home1 2.选择Database Configuration Assistant,运行程序 3.选择下一步 ...................................................................................结束..............................