2012-01-25 24 views
6

Bất cứ ai có xin vui lòng giải thích mục đích của SET SCAN OFF và SET SCAN On là gì? Tôi biết mục đích của nó là để vô hiệu hóa biến thay thế và parameters.But Tôi muốn có một lời giải thích rõ ràngSET QUÉT OFF mục đích

Trả lời

10

SET SCAN là lỗi thời nhưng nó được sử dụng để kiểm soát có nên quét các tham số/biến thay thế hay không. OFF sẽ ngăn việc quét tìm tham số/biến.

SET DEFINE Thay thế/mở rộng các chức năng và một writeup tốt là ở đây: http://shaharear.blogspot.com/2009/01/set-define.html

Từ trang web

bộ xác định trên;

chọn '& hello' từ kép;

Nếu xác định được đặt thành bật và SQL * Plus tìm tiền tố thay thế hiện tại là , nó yêu cầu nhập chuỗi. Trong ví dụ sau, tôi đã nhập: hasan

Nhập giá trị cho hello: chuỗi này đã được nhập

old 1: select '&hello' from dual 
new 1: select 'this string was entered' from dual 

này tương đương với cách thức cũ SET SCAN sẽ làm việc. Về cơ bản bạn đang kiểm soát có hay không nhắc thay thế

+1

DEFINE được đặt thành BẬT theo mặc định? –

4

Trong SQL * Plus (và các công cụ khác hỗ trợ cú pháp SQL *), theo mặc định, công cụ quét các câu lệnh SQL tìm kiếm các biến thay thế. Điều này cho phép bạn tạo các kịch bản lệnh SQL * Plus sử dụng các biến được định nghĩa trong SQL * Plus cho các tác vụ báo cáo khác nhau.

Vì biến thay thế bắt đầu bằng dấu và ('&') và không cần khai báo trước, tuy nhiên, sẽ tạo ra sự cố nếu bạn đang cố gắng chạy câu lệnh SQL xảy ra bao gồm dấu và. Ví dụ: nếu bạn có câu lệnh INSERT xảy ra có chuỗi ký tự bao gồm dấu và, bạn không muốn SQL * Plus xử lý trước câu lệnh. Hoặc, nếu tôi muốn chọn chuỗi "foo & bar"

SQL> set scan off; 
SQL> ed 
Wrote file afiedt.buf 

    1* select 'foo & bar' from dual 
SQL>/

'FOO&BAR' 
--------- 
foo & bar 

Nếu tôi cho phép SQL * Plus để báo cáo kết quả quá trình trước, tuy nhiên, các văn bản '& bar' được hiểu như là một biến thay thế và tôi đang nhắc nhở để nhập văn bản để thay thế trong thời gian chạy

SQL> set scan on 
SQL>/
Enter value for bar: some value 
old 1: select 'foo & bar' from dual 
new 1: select 'foo some value' from dual 

'FOOSOMEVALUE' 
-------------- 
foo some value 
-2

SQL> thiết lập quét trên SQL>/nhập giá trị cho thanh: một số giá trị cũ 1: chọn 'foo & bar' từ kép mới 1: chọn 'foo một số giá trị 'từ số kép

'FOOSOMEVALUE' -------------- foo một số giá trị