如何在 SQL*Plus 中使用开始/结束运行 Oracle 查询?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/4221834/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-10 02:55:04  来源:igfitidea点击:

How to run Oracle query with begin/end in SQL*Plus?

oraclesqlplus

提问by newguy

I have created a query block with begin/end and want to run that in SQL*Plus. But how can I run it in the command line?

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

Actually the code is from some blog and it is used for searching text in the database. ABC is the texts to be searched.

实际上代码来自一些博客,它用于在数据库中搜索文本。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;

but this never gets run. How can I run the codes?

但这永远不会运行。我怎样才能运行代码?

回答by Gary Myers

You need to follow it with a slash like

你需要用一个斜线来跟随它

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

回答by JOTN

You probably just need a "/" on a line by itself at the end to make it execute.

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