标签: plsql

Oracle模糊文本搜索

如何在Oracle中进行模糊名称搜索?

例如:

我们的数据系统首选邮件为:

尼古拉斯吉姆罗利先生

但是在Facebook或其他搜索领域,传递给算法的名称是:

尼克吉姆罗利

该进程将针对所有首选名称运行搜索名称,然后返回包含最匹配字符的结果:

[ Nic ] olas Jim Raleigh先生

[ Nic ] k Jim Raleigh

我搜索过的名字中有16个字符出现在首选名称中,我们可以返回排名建议.

[已加入]

在初步建议和读取Oracle的文本查询选项后,我在表上创建了一个索引

create index ADD_EX_INDX3 on address_extract(pref_mail_name) 
  indextype is ctxsys.context 
  parameters ('DATASTORE CTXSYS.DEFAULT_DATASTORE');
Run Code Online (Sandbox Code Playgroud)

现在能够成功退休了

select score(1), ae.pref_mail_name
from address_extract ae
 where contains(pref_mail_name,'fuzzy(raleigh,,,weight)',1) > 0
order by score(1) desck
Run Code Online (Sandbox Code Playgroud)

哪个回报

100 Mr. Raleigh H. Jameson
100 Mr. Nicolas Jim Raleigh
100 Ms. Susanne M. Raleigh
66  Mrs. LaReign Smith
66  Ms. Rahil Smith
62  Mr. Smith  Ragalie
Run Code Online (Sandbox Code Playgroud)

然而,我正在努力寻找全名.我怎么去做全名呢?

oracle plsql full-text-search names

0
推荐指数
1
解决办法
1万
查看次数

使用SQL转动数据

我是SQL的新手,我想知道如何转动表格,如:

Col1 Col2 Col3
1     a    w
2     a    x 
1     b    y
2     b    z 
Run Code Online (Sandbox Code Playgroud)

成

Col1 a b
1    w y
2    x z
Run Code Online (Sandbox Code Playgroud)

我正在玩,GROUP BY但我似乎无法将唯一的行转换成列

sql plsql pivot

0
推荐指数
1
解决办法
854
查看次数

在oracle触发器中使用SELECT检查条件

我的触发器有什么问题?我将蟾蜍用于oracle
执行此sql蟾蜍后,显示此消息,不再!

Warning: compiled but with compilation errors
Run Code Online (Sandbox Code Playgroud)

并且触发器不起作用

我的触发器在这里:

CREATE OR REPLACE TRIGGER trg_delete_mmtp_user_feature
   BEFORE DELETE
   ON mmtp_user
   FOR EACH ROW
BEGIN
-- for these cases delete not allowed
   IF ((SELECT COUNT (*)
          FROM payment p INNER JOIN mmtp_user mt
               ON mt.customer_id = p.requester_id
         WHERE p.rp_reason_id = 20 AND mt.mmtp_user_id = :OLD.mmtp_user_id) >
                                                                             0
      )
   THEN
      raise_application_error
             (-20654,
              'Query has attempted to delete MMTP_USER with existing payment'
             );

   ELSE                            --befor deleting features should be deleted
      DELETE FROM mmtp_user_feature
            WHERE …
Run Code Online (Sandbox Code Playgroud)

oracle triggers plsql

0
推荐指数
1
解决办法
4189
查看次数

如何在Oracle中查找存储过程的成本并对其进行优化

有没有人让我知道是否有任何方法可以找出Oracle中存储过程的成本?如果没有直接的方式,我想知道任何替代品.
我发现成本的方式是对存储过程中使用的所有查询进行自动跟踪,然后根据查询执行的频率估算proc成本.
除此之外,我想建议优化我的存储过程,尤其是下面给出的查询.
过程的逻辑:
下面是在我的存储过程中用作游标的动态sql查询.此游标在循环内打开并获取.我获取信息并将它们放入varray中,计算数据然后将其插入表中.
我的目标是找出proc的成本以及优化sp.

SELECT DISTINCT acct_no    
FROM raw
WHERE 1=1
AND code = ''' || code ||
''' AND qty       < 0  
AND acct_no 
IN (SELECT acct_no FROM ' || table_name || ' WHERE counter = 
(SELECT MAX(counter) FROM ' || table_name || '))
Run Code Online (Sandbox Code Playgroud)

oracle performance plsql stored-procedures query-optimization

0
推荐指数
1
解决办法
1万
查看次数

从oracle获取函数和过程签名列表

是否有任何查询可以为我提供函数/过程的签名详细信息.我正在查看返回类型,函数名称,参数类型,是否为IN/OUT/INOUT.

我知道这个帖子,但它只提供名字

oracle plsql stored-procedures

0
推荐指数
1
解决办法
2939
查看次数

将两个表中的列连接成一个

我有2个表,EMPLOYEEAPP和EMPLOYEEINFO.

我想在SECURITYGROUP列为特定值时搜索EMPLOYEEAPP表以查找EMPLOYID.

然后,我想从EMPLOYEEAPP表中获取EMPLOYID,并使用EMPLOYEEINFO表中的EMPLID列搜索它们对应的名字和姓氏.

SELECT EMPLOYEEAPP.EMPLOYID, EMPLOYEEINFO.FIRST_NAME, EMPLOYEEINFO.LAST_NAME
FROM EMPLOYEEAPP
WHERE EMPLOYEEAPP.SECURITYGROUP = 'ANALYST'
INNER JOIN EMPLOYEEINFO
ON EMPLOYEEAPP.EMPLOYID=EMPLOYEEINFO.EMPLID
Run Code Online (Sandbox Code Playgroud)

我一直收到错误"ORA-00933:SQL命令未正确结束".

任何帮助或见解将不胜感激!

oracle plsql plsqldeveloper

0
推荐指数
1
解决办法
1964
查看次数

没有使用级别或开始时出现ORA-01788错误

我刚刚开始学习PL/SQL.在stackoverflow中发布帖子后,我编写了一个脚本来搜索Oracle中的某个值,如下所示:

DECLARE
  match_count INTEGER;
  v_owner VARCHAR2(255);
  v_search_value NUMBER;
BEGIN
  v_owner:='USERA USERB';
  v_search_value:=4823.0;
  EXECUTE IMMEDIATE
  'INSERT INTO TMP SELECT owner, table_name, column_name FROM all_tab_cols WHERE instr(:1, owner)>0 AND data_type like ''%NUMBER%''' USING v_owner;
  commit;
  FOR t IN (SELECT owner, table_name, column_name FROM TMP) LOOP
    EXECUTE IMMEDIATE 
    'SELECT COUNT(*) FROM '||t.owner||'.'||t.table_name||' WHERE '||t.column_name||'= :1'
    INTO match_count
    USING v_search_value;
    IF match_count > 0 THEN
      EXECUTE IMMEDIATE
      'INSERT INTO RESULT VALUES(:1, :2, :3, :4)'
      USING t.owner, t.table_name, t.column_name, match_count;
      commit;
    END IF;
  END LOOP; …
Run Code Online (Sandbox Code Playgroud)

oracle plsql

0
推荐指数
1
解决办法
7167
查看次数

Oracle:更新非唯一字段

我需要更新一个非唯一字段.我有一个表tbl:

create table tbl (A number(5));
Run Code Online (Sandbox Code Playgroud)

tbl中的值:1,2,2,2 .. 2.

我需要用新的非唯一值替换所有2

新值:1,100,101,102,103 ..我写道:

DECLARE
    sql_stmt VARCHAR2(500);
   cursor curs is 
        select A from tbl group by A having count(*)>1;
   l_row curs%ROWTYPE;
   i number(5);
   new_mail VARCHAR2(20);
BEGIN
  i:=100;
  open curs;
  loop
    fetch curs into l_row;
    exit when curs%notfound; 
    SQL_STMT := 'update tbl set a='||i||' where a='||l_row.A;
    i:=i+1;
    EXECUTE IMMEDIATE sql_stmt;
  end loop;
  close curs;
END;
/
Run Code Online (Sandbox Code Playgroud)

但我得到了:

         A
----------
         1
       100
       ...
       100
Run Code Online (Sandbox Code Playgroud)

有什么不对?为什么循环不起作用?

oracle plsql loops

0
推荐指数
1
解决办法
236
查看次数

Oracle PL/SQL:阻止并行执行

我有这样的程序.

create or replace
Procedure PROCEDURE_NAME
begin

Insert Instructions

Insert Instructions

Insert Instructions

Some Instructions

Some Instructions

Some Instructions


end;
Run Code Online (Sandbox Code Playgroud)

以上是可以并行执行的指令块,没有任何冲突.如何在Oracle Procedure中定义并行执行它们?

我可以为它们制作不同的程序但是在这个程序中寻找最小的修改,我相信在SQL中调用并行指令是可能的.

oracle parallel-processing plsql

0
推荐指数
1
解决办法
2683
查看次数

用于循环plsql的反转游标

有没有办法使用plsql以降序迭代游标?

我试过这个:

FOR item IN REVERSE items 
LOOP  
-- do stuff
END LOOP;
Run Code Online (Sandbox Code Playgroud)

但它似乎忽略了反向关键词.

有什么建议?

plsql

0
推荐指数
1
解决办法
2365
查看次数