Tôi có một câu hỏi về cách phân tích kết quả của chương trình. Kịch bản lệnh sql mẫu của tôi trông như thế này.Cách tạo tập tin spool oracle sql spool
whenever sqlerror exit failure rollback
set heading off
set arraysize 1
set newpage 0
set pages 0
set feedback off
set echo off
set verify off
declare
ab varchar2(10) := 'Raj';
cd varchar2(10);
a number := 10;
c number;
d number;
begin
c := a+10;
select ab,c into cd,d from dual;
end;
SPOOL
select cd,d from dual;
SPOOL OFF
EXIT;
Đoạn mã trên không có tác dụng, nhưng tôi muốn làm điều gì đó như thế này trong khối bắt đầu, chúng tôi tính toán một số giá trị và tôi muốn đánh dấu các kết quả đó.
Cảm ơn.
Điều gì sẽ xảy ra nếu có con trỏ trong khối và vòng lặp nằm bên trong đầu tiên. Giống như 'vòng lặp c: = a + 10; chọn c thành: d từ kép; kết thúc vòng lặp; kết thúc; SPOOL chọn: d từ kép; SPOOL OFF EXIT; ' Vì vậy, bây giờ nó sẽ cung cấp cho tất cả các kết quả hoặc người nào khác sản lượng cuối cùng được lưu trữ trong: d. Làm thế nào để spool nếu có một vòng lặp. – user987900
Bạn có thể sử dụng DBMS_OUTPUT trong vòng lặp con trỏ để xuất ra giá trị tại mỗi lần lặp của con trỏ. Xem chỉnh sửa .. – Ollie
Hi Ollie, tôi có thêm một câu hỏi nữa. Đoạn mã trên hoạt động tốt khi tôi chạy từ SQL * plus. Nhưng, tôi có một kịch bản lệnh shell để gọi tập lệnh SQL này và chuyển đầu ra thành tệp văn bản. Tôi đã đăng ký kịch bản lệnh shell trong các ứng dụng Oracle và khi tôi gửi yêu cầu từ các ứng dụng để chạy. Nó cho thấy bình thường và chạy nhưng nó không bao giờ được hoàn thành. Do, tôi phải thực hiện bất kỳ thay đổi nào đối với kịch bản trên khi gọi từ một kịch bản lệnh shell. – user987900