【问题标题】:How to run Oracle query with begin/end in SQL*Plus?如何在 SQL*Plus 中使用 begin/end 运行 Oracle 查询?
【发布时间】:2011-05-12 10:22:41
【问题描述】:

我创建了一个带有开始/结束的查询块,并希望在 SQL*Plus 中运行它。但是如何在命令行中运行呢?

实际上代码来自一些博客,用于在数据库中搜索文本。 ABC 是要搜索的文本。

set serveroutput on size 1000000
declare
TYPE QueryCurType is REF CURSOR;
query1 QueryCurType ;

cursor c1 is select owner,table_name from dba_tables where owner not in ('SYS','SYSTEM') and table_name not like '%$%';
cursor c2(t1 varchar2) is select column_name from dba_tab_columns where table_name=t1 and DATA_TYPE in ('NVARCHAR2','VARCHAR2','CHAR');
temp_var varchar2(3000);
query varchar2(3000);

begin
for tab1 in c1 loop
  for col in c2(tab1.table_name) loop
    query:='select '||col.column_name||' from '||tab1.owner||'.'||tab1.table_name||' where '||col.column_name||' like "ABC"';
    --dbms_output.put_line('executing..'||query);
    open query1 for query;
    loop
      fetch query1 into temp_var;
      if concat('a',temp_var) != 'a' then
      dbms_output.put_line('Found String: "'||temp_var||'"# Column:'||col.column_name||'# Table:'||tab1.table_name);
      end if;
      exit when query1%NOTFOUND;
    end loop;
  end loop;
end loop;
end;

但这永远不会运行。如何运行代码?

【问题讨论】:

  • 查看匿名 PLSQL 块的全部内容会有所帮助,如果有的话,还可以查看 ORA 代码。

标签: oracle sqlplus


【解决方案1】:

你需要在它后面加上一个斜杠

begin
  dbms_output.put_line('Hello World');
end;
/

【讨论】:

  • 这正是我想要的。谢谢加里。
  • 问题是控制台中没有显示行。如何告诉 sqlplus 打印所有 dbms_output.put_line?
【解决方案2】:

您可能只需要在最后一行单独添加一个“/”即可使其执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 2023-02-09
    相关资源
    最近更新 更多