2010-11-19 31 views
31

Tôi đã tạo một khối truy vấn bắt đầu/kết thúc và muốn chạy nó trong SQL * Plus. Nhưng làm thế nào tôi có thể chạy nó trong dòng lệnh?Làm thế nào để chạy truy vấn Oracle với bắt đầu/kết thúc trong SQL * Plus?

Thực ra mã là từ một số blog và nó được sử dụng để tìm kiếm văn bản trong cơ sở dữ liệu. ABC là các văn bản được tìm kiếm.

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; 

nhưng điều này không bao giờ được chạy. Làm thế nào tôi có thể chạy các mã?

+1

Xem toàn bộ nội dung của khối PLSQL ẩn danh sẽ giúp và (các) mã ORA nếu bạn nhận được bất kỳ mã nào. –

+0

Tôi đã chỉnh sửa câu hỏi. – newguy

Trả lời

60

Bạn cần phải làm theo nó với một dấu gạch chéo như

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

Đó chính là điều tôi muốn. Cảm ơn Gary. – newguy

+6

Omg ... stupid Oracle! Câu hỏi – qwertzguy

+0

không có dòng nào được hiển thị trong bảng điều khiển. Làm thế nào tôi có thể nói sqlplus để in tất cả dbms_output.put_line? – Qianlong

13

Bạn có thể chỉ cần một "/" trên một dòng riêng của mình ở cuối để làm cho nó thực thi.

Các vấn đề liên quan