我已經用begin/end創建了一個查詢塊,並且想要在SQL * Plus中運行它。但是我怎樣才能在命令行中運行它?如何在SQL * Plus中使用begin/end運行Oracle查詢?
其實代碼來自一些博客,它用於搜索數據庫中的文本。 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代碼。 – 2010-11-19 03:35:57
我編輯了這個問題。 – newguy 2010-11-19 03:44:24