【问题标题】:How to execute block in oracle? [duplicate]oracle如何执行block? [复制]
【发布时间】:2015-11-03 02:33:21
【问题描述】:

我正在寻找在 oracle 所有表和列中搜索字符串/数字的解决方案。

我在网上查了一下,可以找到很多解决方案。

但是当我在 SQL Oracle 开发人员中执行以下解决方案时,它会创建匿名块。

谁能帮助我如何在 Oracle 中使用以下解决方案来获得结果。

DECLARE
  match_count integer;
  v_search_string varchar2(4000) := <<string you want to search for>>;
BEGIN  
  FOR t IN (SELECT owner, table_name, column_name FROM all_tab_columns) LOOP   
    EXECUTE IMMEDIATE    
      'SELECT COUNT(*) FROM '||t.owner || '.' || t.table_name||
      ' WHERE '||t.column_name||' = :1'   
       INTO match_count  
      USING v_search_string; 
    IF match_count > 0 THEN 
      dbms_output.put_line( t.owner || '.' || t.table_name ||' '||t.column_name||' '||match_count );
    END IF; 
  END LOOP;
END;
/

请帮忙,因为我是 Oracle 的新手。

感谢您的建议

【问题讨论】:

  • 我不确定您所说的“它会创建匿名块”是什么意思。匿名块不会存储在任何地方,因此像创建存储对象(如过程或函数)那样谈论“创建”它是没有意义的。你在执行匿名块吗?你看到任何结果了吗?您是否为您的会话启用了dbms_output?您是否将实际要搜索的字符串放在“>”中?你有错误吗?
  • @JustinCave:感谢您的回复。是的,我已经输入了要在数据库中搜索的字符串。我只是在 SQL Oracle 开发人员的 SQL 窗口中执行此操作,它向我显示创建了匿名块。所以这是我的查询我应该如何在 SQL Oracle 开发人员中执行?
  • 消息到底是什么?您是否看到“PL/SQL 过程已成功完成。”?这表明匿名块已成功执行。正如我所说,匿名块不会像过程和函数这样的持久对象那样被创建。问题是您正在执行匿名块但没有看到来自dbms_output 的任何输出吗?如果是这样,我将把它作为我链接到的问题的副本关闭。

标签: oracle


【解决方案1】:

首先执行

Set serveroutput on;

然后执行你的匿名块。

【讨论】:

    【解决方案2】:

    在 SQL Developer 中单击视图和 DBMS 输出。 此时您可以看到结果 PL/SQL 块。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-02
      • 2014-06-30
      • 2010-11-05
      • 2022-12-09
      • 1970-01-01
      • 1970-01-01
      • 2013-08-22
      相关资源
      最近更新 更多