Mam pytanie dotyczące buforowania wyników mojego programu. Mój przykładowy skrypt sql wygląda następująco.Jak utworzyć plik bufora skryptu sql Oracle
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;
Powyższy skrypt nie działa, ale chcę zrobić coś takiego, gdzie na rozpoczęcie bloku końcowego obliczyć pewne wartości i chcę, aby szpula te wyniki.
Dzięki.
Co się stanie, jeśli w bloku znajduje się kursor i będzie on pasował wewnątrz początku. Podobnie jak 'pętla c: = a + 10; wybierz c do: d z podwójnego; koniec pętli; koniec; SPOOL wybierz: d od dual; SPOOL OFF EXIT; ' Tak, teraz da wszystkie wyniki lub ostateczne wyjście zapisane w: d. Sposób buforowania, jeśli występuje pętla. – user987900
Możesz użyć DBMS_OUTPUT w pętli kursora, aby wyprowadzić wartość przy każdej iteracji kursora. Zobacz edytuj .. – Ollie
Witam Ollie, mam jeszcze jedno pytanie. Powyższy kod działa poprawnie, gdy uruchamiam z SQL * plus. Ale mam skrypt powłoki, który wywołuje ten skrypt SQL i buforuje dane wyjściowe do pliku tekstowego. Zarejestrowałem skrypt powłoki w aplikacjach Oracle i po przesłaniu żądania z aplikacji do uruchomienia. Pokazuje normalne i działa, ale nigdy się nie kończy. Czy, muszę dokonać jakichkolwiek zmian w powyższym skrypcie podczas wywoływania ze skryptu powłoki. – user987900