Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Comenzi SQL*Plus suplimentare

Oracle


Comenzi SQL*Plus suplimentare

Ce sunt comenzile SQLTIus suplimentare?

SQL*Plus este un instrument care va permite sa interactionati direct cu baza de date Oracle. SQL*Plus va da posibilitatea sa manipulati blocuri de comenzi SQL si PL/SQL, sa formatati rezultatele interogarilor, sa copiati date între tabele si sa executati cod SQL si PL SQL. De asemenea, puteti folosi SQL*Plus pentru a defini mediul care 17417c25r controleaza zona în care lucrati. Printre acesti parametri de control se numara cei care stabilesc dimensiunile paginilor si ale liniilor, afisarea sau neafisarea antetelor la prezentarea rezultatelor interogarilor si nivelul de feedbâck al serverului.



Acest capitol trateaza comenzile mai avansate care nu au fost prezentate în Capitolul 18, Formatarea rezultatelor interogarilor cu instructiuni SQL*Plus", precum si câteva comenzi mai putin cunoscute.

De ce se folosesc comenzile SQL*Plus suplimentare

Comenzile SQL*Plus ofera utilizatorului, programatorului si administratorului bazei de date instrumentele necesare pentru accesarea simpla si eficienta a bazei de date Oracle. Printre avantajele utilizarii SQL*Plus se numara urmatoarele:

Acesta poseda un editor de text online care va permite sa salvati, sa încarcati si sa rulati blocuri de comenzi SQL si PL/SQL

Formateaza si efectueaza calcule asupra rezultatelor interogarilor

Afiseaza informatii referitoare la coloanele tabelelor

Cum se folosesc comenzile SQL*Plus suplimentare?

Acest capitol prezinta subiectele SQL*Plus mai avansate a caror cunoastere va va permite sa ajustati datele de iesire dupa necesitati.

Formatarea paginii

în SQL*Plus, o pagina înseamna un ecran plin cu informatii pe displayul calculatorului dumneavoastra sau o pagina a unui raport tiparit. Aveti posibilitatea sa plasati titluri în partea superioara si la baza fiecarei pagini, sa stabiliti numarul liniilor pe pagina si latimea fiecarei linii.

Dupa cum a fost descris în Capitolul 18, puteti include un titlu în partea superioara si la baza fiecarei pagini folosind comenzile ttitle, respectiv btitle. Acest paragraf descrie optiunile pe care le puteti folosi cu aceste doua comenzi.

col n

Face ca urmatorul sir de caractere sa apara în coloana specificata a liniei.

skip n

Sare la linie noua de n ori. Daca n este mai mare decât 1 vor fi lasate n linii albe înaintea urmatorului sir de caractere.

left

Aliniaza la stânga urmatorul sir de caractere.

right

Aliniaza la dreapta urmatorul sir de caractere.

center

Centreaza urmatorul sir de caractere.

bold

Face linia aldina. Aldinele sunt redate pe ecranul dumneavoastra prin repetarea liniei de trei ori. La tiparire, linia este tiparita o singura data, cu aldine.

Acesta este marcajul de continuare a liniei. Plasati cratima la sfârsitul unei linii care este continuata pe linia urmatoare.

În plus, puteti include oricare dintre urmatorii parametri de sistem în instructiunile de configurare a titlurilor:

SQL.LNO

Reprezinta numarul liniei curente

SQL.PNO

Reprezinta numarul paginii curente

SQL.RELEASE

Reprezinta numarul versiunii Oracle curente

SQL.SQLCODE

Reprezinta codul erorii curente

SQL.USER

Reprezinta numele utilizatorului curent

Exemplul urmator foloseste câteva dintre aceste clauze si parametri pentru crearea unor rapoarte clare si atractive în acest exemplu, sunt folosite clauzele SQL*Plus

skip, center, left si right, precum si parametrul de sistem sql .pno:

ttitle center 'Compania XYZ' skip l -

center ' ** ** **' skip 2 left 'Raport de vanazari

zonale' -

right "Totaluri vânzari pe luna Iunie' skip 2 btitle left 'Confidential' RIGHT 'Pagina: ' format 999 -sql.pno

set linesize 60

column zona_vanzari heading 'Zona Vânzari' format A15 column totaluri_vanzari heading 'Total Vânzari' format

$99,999,999 break on zona_vanzari skip l

select zona_vanzari, totaluri_vanzari from lista_vanzari where luna_vanzari = '06'

Date de iesire:

Compania XYZ

Raport de vânzari zonale

Totaluri vânzari pe luna Iunie

Zona Vânzari

Total Vânzari

North East

South East

Mid West

Plains

North West

Confidential

Pagina: 1

Variabile de legatura

Variabilele de legatura sunt variabilele create în SQL*Plus. La aceste variabile se poate face apoi referire într un program PL/SQL ca si cum ar fi fost declarate în programul însusi. Variabilele de legatura sunt necesare deoarece variabilele declarate în programele PL/SQL nu sunt accesibile comenzilor SQL*Plus. Variabilele de legatura sunt utilizate frecvent pentru a gestiona returnarea valorilor de catre subprograme:

Pentru a crea o variabila de legatura, folositi comanda variable. Sintaxa acesteia este urmatoarea:

variable nume_variabila numar

Pentru a face referire la o variabila de legatura într-un subprogram PL/SQL, precedati variabila de legatura cu semnul doua puncte (:). De exemplu, instructiunea urmatoare face referire la variabila de legatura total_vanzari asociindu-i valoarea O într-un program PL/SQL:

:total_vanzari :=0;

Pentru a afisa valoarea variabilei de legatura total_vanzari, folositi comanda SQL*Plus print. Sintaxa acesteia este

print total_vanzari

Variabile de substitutie

O variabila de substitutie este o variabila definita de utilizator si care este precedata de caracterul &'. SQL*Plus trateaza variabila de substitutie ca si cum ar fi valoarea variabilei de substitutie si nu variabila însasi. Puteti folosi variabile de substitutie oriunde în comenzi S L si SQL*Plus, cîi exceptia primei comenzi introduse în timpul unei sesiuni SQL*Plus. Daca nu furnizati o valoare pentru variabila de substitutie, SQL*Plus va invita sa introduceti o valoare. Acest lucru se întâmpla atunci când variabila de substitutie este întâlnita în timpul executiei.

În exemplul urmator, variabila sorti este definita ca având valoarea pozitie, iar variabila tabel l este definita ca având valoarea lista_articole.

Primul exemplu foloseste variabile de substitutie, în timp ce al doilea exemplu foloseste valorile variabilelor de substitutie. Ambele exemple produc aceleasi rezultate.

break on Ssortl select * from Stabell order by Ssortl ASC;

break on pozitie

select * from lista_articole

order by pozitie ase;

Urmatoarele variabile de sistem afecteaza variabilele de substitutie:

set scan

Activeaza si dezactiveaza substitutia.

set define

Defineste caracterul de substitutie în mod prestabilit acesta este caracterul &.

set escape

Defineste caracterul de evitare pe care îl veti folosi înaintea caracterului de substitutie. Acest caracter indica programului SQL*Plus sa trateze caracterul de substitutie ca pe un caracter obisnuit.

set verify on

Stabileste daca fiecare linie a fisierului de comenzi este afisata sau nu înainte si dupa substitutie.

set concat

Defineste caracterul de concatenare în mod prestabilit acesta este punctul (.).

Exemplul urmator foloseste comanda set concat. SQL*Plus solicita automat utilizatorului sa introduca valoarea vânzarilor întrucât aceasta nu a fost definita anterior.

SQL> select * from lista_articole

where coduri_articole = '&c_articole.001';

Enter value for c_articole: 21345

Instructiunile anterioare vor fi interpretate astfel: SQL> select * from lista_articole where coduri_articole = '21345001';

Sa privim acum un exemplu mai apropiat de realitate, în care este folosita clauza order by cu o variabila de substitutie. Remarcati faptul ca în exemplul urmator SQL*Plus cere utilizatorului sa introduca o valoare pentru fiecare variabila de substitutie.

SQL> select * from lista_personal

SQL> where ocupatie = '&c_ocupatie'

SQL> order by '&c_ocupatie';

Enter value for c_ocupatie: profesor

old where ocupatie = '&c_ocupatie'

new where ocupatie = 'profesor'

Enter value for c_ocupatie: profesor

old order by '&c_ocupatie'

new order by 'profesor'

Remarcati din exemplul precedent faptul ca a trebuit sa introduceti de doua ori valoarea pentru variabila de substitutie c ocupatie. SQL*Plus va solicita sa introduceti valoarea pentru fiecare variabila de substitutie. Puteti sa evitati sa fiti solicitat sa introduceti în mod repetat aceleasi valori folosind combinatia &&. Aceasta indica programului SQL*Plus sa defineasca automat variabila de substitutie precedata de && ca fiind variabila de substitutie precedata de &. In acest fel, puteti sa recodificati instructiunea anterioara pentru a evita invitatiile repetate dupa cum urmeaza:

select * from lista_personal

where ocupatie = '&c_ocupatie'

order by '&&c_ocupatie' ;

Conectarea la o baza de date

SQL*Plus va permite sa va conectati la baza dumneavoastra de date prestabilita sau la o baza de date situataJa distanta. Pentru a realiza conexiuni la distanta, folositi comanda connect. In mod normal, atunci când porniti SQL*Plus, va conectati la baza dumneavoastra de date prestabilita.

Dupa ce ati accesat baza de date prestabilita, SQL*Plus va permite sa va conectati la aceeasi baza de date sub un alt nume. De exemplu, pentru a conecta utilizatorul user_ la baza de date prestabilita curenta folosind parola 0823KYQ, instructiunea dumneavoastra va arata în felul urmator:

SQLPLUS> CONNECT user_01/0823KYQ

SQL*Plus va solicita sa introduceti numele de utilizator si parola daca le-ati omis în sirul instructiunii connect.

Prin intermediul SQL*Plus puteti sa accesati si baze de date situate la distanta. Acest lucru este important atunci când lucrati într-un mediu distribuit. SQL*Pliis va permite sa va conectati la o baza de date situata la distanta în doua moduri:

Conectarea la baza de date situata la distanta are loc pe parcursul sesiunii SQL*Plus curente

Conectarea la baza de date situata la distanta are loc simultan cu lansarea comenzii sqlplus

Oricare ar fi varianta aleasa, trebuie sa aveti un nume de utilizator si o parola valide pentru baza de date la care doriti sa va conectati.

Pentru a va conecta la o baza de date situata la distanta din interiorul SQL*Plus, lansati comanda connect, urmata de numele de utilizator si de parola, precum si de specificatia bazei de date situate la distanta. De exemplu, instructiunea urmatoare stabileste o conexiune cu baza de date situata la distanta vanzari_california folosind numele de utilizator user_

SQLPLUS> CONNECT user_01/0823KQY@vanzari_california

Forma concreta a specificatiei bazei de date pe care o introduceti în instructiunea connect depinde de protocolul SQL*NET si de sistemul de operare al calculatorului dumneavoastra. Consultati manualul SQL*NET si administratorul sistemului pentru a afla sirul care trebuie folosit pentru specificarea bazei de date.

Pentru a va conecta la o baza de date situata la distanta de la linia de comanda, lansati comanda sqlplus împreuna cu specificatia bazei de date. Daca omiteti numele de utilizator si parola, SQL*Plus va solicita sa le introduceti. Exemplul urmator este asemanator cu cel precedent, cu exceptia faptului ca aceasta instructiune connect realizeaza conexiunea cu baza de date situata la distanta atunci când porniti SQL*Plus:

>SQLPLUS CONNECT user_01/0823KQY@vanzari_california

Veti ramâne conectat cu baza de date pâna în momentul în care efectuati una dintre urmatoarele actiuni:

Lansati o comanda connect pentru a va conecta la o alta baza de date

Lansati comanda disconnect

Parasiti SQL*Plus

Copierea datelor folosind SQL*Plus

SQL*Plus va permite sa copiati date în oricare dintre urmatoarele moduri:

De la o baza de date situata la distanta la alta baza de date situata la distanta

De la baza dumneavoastra de date prestabilita la o baza de date situata la distanta

De la o baza de date situata la distanta la baza dumneavoastra de date prestabilita

Sintaxa comenzii SQL*Plus este urmatoarea:

copy from nume_baza_de_date to nume__baza_de_date -actiune -

tabel_destinatie (nume_coloana, nume_coloana, ...) -using interogare

Sa analizam componentele comenzii SQL*Plus. Trebuie sa cunoasteti specificatiile exacte pentru ambele baze de date si sa posedati un nume de utilizator si o parola valide.

Comanda copy actioneaza diferit în functie de clauza actiune pe care o furnizati si în functie de faptul ca tabelul destinatie exista sau nu. Cele patru clauze pe care le puteti folosi sunt create, insert, append si replace.

Clauza create are ca rezultat urmatoarele actiuni:

Daca tabelul destinatie exista deja, este generata o eroare si procesarea se încheie.

Daca tabelul destinatie înca nu exista, comanda copy creeaza tabelul folosind datele copiate.

Clauza insert are ca rezultat urmatoarele actiuni:

Daca tabelul destinatie exista deja, comanda copy insereaza datele în tabel.

Daca tabelul destinatie nu exista înca, este generata o eroare si procesarea se încheie.

Clauza append are ca rezultat urmatoarele actiuni:

Daca tabelul destinatie exista deja, datele copiate sunt inserate în tabel.

Daca tabelul destinatie înca nu exista, comanda copy creeaza tabelul si insereaza datele copiate.

Clauza replace are ca rezultat urmatoarele actiuni:

Daca tabelul destinatie exista deja, comanda copy elimina datele existente si le înlocuieste cu datele copiate.

Daca tabelul destinatie înca nu exista, comanda copy îl creeaza folosind datele copiate.

Comenzi SQL*Plus diverse

În continuare sunt prezentate diverse comenzi SQL*Plus în completarea celor prezentate anterior, în acest capitol.

Ruleaza fisierul de comenzi specificat în mod prestabilit fisierul are extensia .sql si se presupune ca se gaseste în directorul prestabilit. Comanda urmatoare executa fisierul copiere_articole.sql:

@copiere_articole.sql

Returneaza un fisier de comenzi imbricat în mod prestabilit fisierul de comenzi are extensia,.sql si se presupune ca se gaseste în acelasi director ca si fisierul de comenzi în exemplul urmator, este prezentat fisierul de comenzi cdpiere_articole.sql. Atunci când procesarea ajunge la @articole_pret, se presupune ca acest fisier se gaseste în directorul prestabilit curent. Atunci când este executata linia @@articole trimiteri, se presupune ca acest fisier se gaseste în acelasi director ca si fisierul copiere_articole.sql.

Select * from lista_articole;

@articole_pret

@@articole_trimiteri

Comanda / executa comanda SQL sau blocul PL/SQL care se afla în tampon în momentul respectiv. Aceasta comanda este asemanatoare cu comanda run însa nu afiseaza comenzile pe ecran.

accept

Citeste o linie de date de intrare de la terminal si o stocheaza într-o variabila specificata. Puteti include clauza option hide la sfârsitul instructiunii pentru a dezactiva afisarea informatiilor introduse de utilizator. Un exemplu practic de utilizare a clauzei hide îl reprezinta solicitarea introducerii parolei de catre utilizator. Evident, nu veti dori ca aceasta sa fie afisata si pe ecran.

Sintaxa:

accept variabila tip_data prompt text

În exemplul urmator, utilizatorul este solicitat sa introduca numarul de asistenta sociala al angajatului:

accept nr_as_ang char prompt 'Introduceti numarul de asistenta sociala al angajatului:'

Define

Atribuie o valoare caracter unei variabile specificate de utilizator. Aceasta comanda poate fi folosita si pentru a afisa valoarea variabilei specificate. Primul exemplu atribuie o valoare caracter variabilei text_1:

define text_1 = 'sirul dumneavoastra de caractere este stocat aici'

Acest exemplu afiseaza valoarea variabila text

Sql>define text_1

define text_1 = sirul dumneavoastra de caractere este stocat aici (char)

Describe

Afiseaza coloanele, tipurile datelor si lungimile coloanelor din tabelul, vederea sau sinonimul specificat. Poate fi folosita si pentru a afisa specificatia functiei, procedurii sau pachetului specificat sau a continutului pachetului specificat în exemplul urmator, este descris tabelul LISTA_ARTICOLE:

Pentru a descrie tabelul, lansati comanda

describe lista_articole Aceasta comanda afiseaza

NAME

NULL?

TYPE

ID_ARTICOL

NOT NULL

NUMBER

NUMAR_ARTICOL

NOT NULL

VARCHAR2 (15)

NUME_ARTICOL

VARCHAR2 (50)

COD_ARTICOL

VARCHAR» (10)

disconnect

Deconecteaza utilizatorul de baza de la date Oracle si salveaza în baza de date toate modificarile aferente. Utilizatorul nu este deconectat de la SQL*Plus. Aceasta comanda este lansata la linia de comanda sqlplus.

exit

Deconecteaza utilizatorul de baza de date Oracle, îl deconecteaza de la SQL*Plus si salveaza în baza de date toate modificarile aferente. Aceasta comanda este lansata la linia de comanda sqlplus.

help

Acceseaza sistemul de asistenta soft al SQL*Plus.

host

Executa o comanda a sistemului de operare gazda fara parasirea SQL*Plus. Comanda urmatoare solicita afisarea listei directorilor din directorul curent:

SQL> host directory

remark

Initiaza un comentariu al utilizatorului. Aceasta comanda nu este interpretata drept comanda de catre SQL*Plus

Runform

Invoca programul SQL*Forms din interiorul SQL*Plus

Timing

Înregistreaza informatii referitoare la timp pentru o perioada de timp. Afiseaza informatiile referitoare la timp cu clauza show. Instructiunea urmatoare creeaza o zona de cronometrare numita time_test, afiseaza data si ora, afiseaza timpul cronometrat si elimina din memorie zona de cronometrare

timing start time_test set timing on timing show timing stop

Undefine

Elimina din baza de date variabila specificata definita de utilizator. Comanda urmatoare elimina din baza de date variabila calc_cost:

undefine calc_cost

whenwver oserror

Paraseste SQL*Plus daca survine o eroare a sistemului de operare în mod prestabilit, SQL*Plus continua procesarea daca este omisa aceasta comanda. Aceasta comanda poate fi însotita de urmatoarele clauze:

Exit

Forteaza parasirea SQL*Plus atunci când este detectata o eroare a sistemului de operare. Puteti stabili ca la parasirea SQL*Plus sa fie retumat codul de eroare SQL*Plus, codul de eroare al sistemului de operare, un numar sau o variabila.

continue

Dezactiveaza optiunea exit.

Commit

Atunci când este detectata o eroare a sistemului de operare, se efectueaza salvarea tranzactiei curente.

Rollback

Executa o derulare înapoi atunci când este detectata o eroare a sistemului de operare.

None

Indica programului SQL*Plus sa nu reactioneze atunci când este detectata o eroare a sistemului de operare.

Codul din exemplul urmator deruleaza înapoi toate modificarile pâna la ultimul punct de salvare la detectarea unei erori a sistemului de operare. Codul erorii sistemului de operare este returnat la parasirea SQL*Plus.

whenever oserror exit oscode rollback;

insert into costuri nocturne (select from lista costuri where costuri_nocturne.id = lista_costuri.id);

whenwver sqlerror Paraseste SQL*Plus atunci când o comanda SQL sau un bloc PL/SQL genereaza o eroare în mod prestabilit, SQL*Plus continua procesarea daca este omisa aceasta comanda. Aceasta comanda poate fi însotita de urmatoarele clauze:

exit

Forteaza parasirea SQL*Plus atunci când este detectata o eroare SQL sau PL/SQL. Puteti stabili ca la parasirea SQL*Plus sa fie returnat codul de eroare SQL*Plus, codul de eroare al sistemului de operare, un numar sau o variabila.

continue

Dezactiveaza optiunea exit.

commit

Atunci când este detectata o eroare SQL sau PL/SQL, se efectueaza salvarea tranzactiei curente.

rollback

Executa o derulare înapoi atunci când este detectata o SQL sau PL/SQL.

none

Indica programului SQL*Plus sa nu reactioneze atunci când este detectata o eroare SQL sau PL/SQL.

Codul din exemplul urmator deruleaza înapoi toate modificarile pâna la ultimul punct de salvare la detectarea unei erori SQL sau PL/SQL. Codul erorii SQL sau PL/SQL este returnat la parasirea SQL*Plus.

whenever sqlerror exit oscode rollback; insert into costuri nocturne (select from lista costurT where costuri_nocturne.id = lista costurT.id);

Rezumat

SQL*Plus este un instrument Oracle care permite utilizatorilor sa interactioneze direct cu serverul Oracle în acest capitol, au fost descrise câteva dintre comenzile de mediu care controleaza modul în care terminalul dumneavoastra interactioneaza cu SQL*Plus. De asemenea, au fost prezentate comanda copy si comenzile avansate ale programului SQL*Plus.

SQL*Plus este necesar pentru a permite utilizatorului sa lanseze comenzi SQL si blocuri de comenzi PL/SQL în vederea inserarii si manipularii datelor din baza de date. De asemenea, acest instrument permite formatarea, efectuarea de calcule asupra rezultatelor interogarilor precum si stocarea si tiparirea acestora.

Pe parcursul unei sesiuni SQL*Plus interactive, lansati comenzile SQL, blocurile de comenzi PL/SQL sau comenzile SQL*Plus pentru a obtine rezultatele dorite. Ca alternativa, aceste comenzi pot fi pastrate într-un fisier de comenzi care poate fi executat din interiorul SQL*Plus.


Document Info


Accesari: 3122
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )