Você está na página 1de 62

Por Edson Almeida Junior

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

Maro-2006

Ultima Atuali a!o ""#0$#2006

1. INTRODUO Introduo

Ao desen%ol%ermos um &ro'eto temos em mente algumas (uest)es &ara (ue o sistema im&lementando satis*aa as nossas necessidades de neg+cio dentro das nossas limita)es de rela!o custo , bene*-cio. Como Organi ar a im&lementa!o de um sistema. Como *a er &ara (ue sua Administrao se'a sim&les . Como garantir um bom Desem!en"o . /s recursos dis&on-%eis no 01M2S /racle "03 s!o *erramentas (ue4 com certe a4 nos au,iliar!o a obter nossos ob'eti%os. Tudo (ue ser5 a&rendido a(ui ser5 com&at-%el com o /racle 6i4 7i e "0g. 8L#S9L Linguagem de &rocedimentos do /racle. Atra%:s dela &odemos criar di%ersas ;rotinas< de &rograma!o4 dentre elas4 8rocedimentos =8rocedures>4 3atil?os =Triggers> e @un)es =@unctions>. 1ACLA0A -- Bari5%eis -- Cursores -- 8rocedures ou @un)es 2A3CD -- 8rocessamento AECA8TC/D -- Tratamento de A,cess)es AD1F

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

Introduo

A &rimeira estrutura na (ual um S321 0elacional esta%a baseado tra ia o S9L &uro como Gnica *orma de inter*ace com o banco.

S9L

Usu#rio
1ados

RD$%&

/ &er*il de utili a!o dos bancos de dados relacionais *oi e%oluindo e essa estrutura4 com o &assar do tem&o4 '5 n!o res&ondia Hs necessidades. Agregou-se ent!o e,tens)es ao S9L (ue &retendiam res&onder Hs no%as necessidades adicionando comandos &rocedurais a linguagem declarati%a do S9L. Do caso da /racle essa e,tens!o *oi c?amada de 8rocedural Language = 8L#S9L>.

S9LJ8L

Usu#rio
1ados

RD$%&

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

Introduo

0ecentemente o &er*il de utili a!o e%oluiu no%amente e nos %emos diante de no%as necessidades. Astruturas mais com&le,as como 2anco de 1ados 1istribu-dos4 grande (uantidade de in*orma!o4 custo de tr5*ego em rede e Ar(uitetura Cliente-Ser%idor s!o algumas caracter-sticas desse no%o &er*il. Da Ar(uitetura Cliente-Ser%idor4 &or e,em&lo4 : muito im&ortante manter o tr5*ego de rede a um m-nimo e aumentar a &er*ormance do 012MS de modo (ue ele &ossa atender ra&idamente as *re(Kentes transa)es solicitadas &elo usu5rio. Com essas es&eci*ica)es4 organi ar o &rocessamento tornando-se *undamental. 8or e,em&lo4 grandes blocos 8L#S9L circulando &ela rede e sendo com&ilados e otimi ados &elo ser%idor4 a cada no%a e,ecu!o4 n!o : uma boa solu!o. A mel?or id:ia : arma enar rotinas dentro do 012MS e acionar essas rotinas atra%:s de c?amadas. Am %e de todo um bloco 8L#S9L temos circulando &ela rede a&enas o nome da rotina e seus &arLmetros. Al:m disso o /racle &ode guardar a *orma com&ilada e otimi ada dessas rotinas mel?orando o tem&o de e,ecu!o. Do /racleM ou /racle6 isto : um 8rocedimento Arma enado4 ou &TORED PRO'EDURE.

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

Introduo

S9LJ8LJC?amadas a rotinas arma enadas

Usu#rio
1ados

RD$%&

Al:m das %antagens de &er*ormance4 o uso de Stored 8rocedures torna o sistema mais modular. As cl5ssicas %antagens de um sistema estruturadoN rea&ro%eitamento de c+digo4 identi*ica!o dos &ontos cr-ticos do sistema e *acilidade de manuten!o gan?am agora uma no%a abordagem. Deste sentido se torna interessante (ue o 012MS su&orte mel?or o desen%ol%imento do (ue sim&lesmente arma enar rotinas isoladas. O *re(Kentemente necess5rio (ue di%ersas rotinas com&artil?em as mesmas %ari5%eis globais e (ue c?amam rotinas n!o diretamente dis&on-%eis &ara o usu5rio. Do /racleM isso : su&ortado &elo uso de 8acotes4 ou PA'(A)E&.

RD$%&
8rocedure A

Usu#rio
1ados 8rocedure 2

Bari5%el 3lobal

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

Introduo

Uma e%olu!o natural nessa tecnologia : tornar o banco de dados mais inteligente. / 012MS tem o controle de todas as o&era)es sobre os dados4 se adicionarmos o conceito de Stored 8rocedures *ica *5cil imaginar o banco de dados monitorando determinados e%entos e acionando rotinas autom5ticas. Assas rotinas autom5ticas ser%em n!o s+ &ara garantir a integridade do banco de dados mas tamb:m garantir as regras inerentes ao neg+cio. Assim como temos uma c?a%e &rim5ria ou uma restri!o a um dom-nio = constraints &rimarQ ReQ e c?ecR im&lementadas &elo 012MS >4 &odemos ter 4 no neg+cio 4 restri)es (ue limitem uma %enda a uma determinada &orcentagem do esto(ue ou (ue determinem o limite de cr:dito de um cliente baseado no seu %olume de neg+cio. At: ?o'e essas regras eram &rogramadas dentro da a&lica!o. / &rogramador tin?a (ue se &reocu&ar com elas ao mesmo tem&o (ue cria%a as rotinas es&ec-*icas da a&lica!o. Csso torna%a o desen%ol%imento mais lento4 o c+digo mais di*-cil de manter e aumenta%a a &ossibilidade de erros4 al:m disso uma mudana nas regras de neg+cio im&lica%a *re(Kentemente na altera!o de %5rios &rogramas. As rotinas autom5ticas do /racleM ou /racle6 s!o c?amadas de 3atil?os4 ou DATA$A&E TRI))ER&.

RD$%&
S9L Ta*elas Triggers

Usu#rio
1ados

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

+. &tored Pro,edures

'riando &tored Pro,edures

E-em!lo 1. 'REATE PRO'EDURE 80/CASSAMADT/ AS 2A3CD CDSA0T CDT/ AU1CT/0CA = SSS1ATA4 TTermino Dormal do 8rocessamento T>N C/MMCT U/0VF AD1F

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

'riando &tored Pro,edures

E-em!lo +. C0AATA OR REP/A'E 80/CA1U0A 80/CASSAMADT/ CS 2A3CD CDSA0T CDT/ AU1CT/0CA =SSS1ATA4 TTermino Dormal do 8rocessamento T>F C/MMCT U/0VF E0'EPTION UWAD /TWA0S TWAD C@ ..... TWAD .... ALSA 0/LL2ACVF AD1 C@F END PRO'E&&A%ENTO1 E-e,utando &tored Pro,edures

No &2/P/U&. S9LX E0E'UTE PRO'E&&A%ENTO1 No P/3&2/ 1ACLA0A = declara!o de %ari5%eis> 2A3CD = Cnstru)es> PRO'E&&A%ENTO1 =Cnstru)es> AD1F No &2/4OR%& 5 Dentro de um Trigger ou Pro,edure 6 C*N 2L/C/"0.U@ Y TCAT T?en PRO'E&&A%ENTO1 Alse 0/LL2ACVF And C*F

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

Usando Par7metros

/s nomes e ti&os das %ari5%eis usadas como &arLmetros de%em ser declarados (uando a &rocedure : criada. Da es&eci*ica!o do ti&o NO de%er5 constar o taman?o4 mas declara)es ZTS8A e Z0/UTS8A s!o &ermitidas. /s %alores s!o substitu-dos em termo de c?amada da &rocedure4 %ariando assim a cada e,ecu!o. /s &arLmetros &odem serN A&enas de AntradaN 'REATE PRO'EDURE TE&TE 5 8ar1 IN 9ar,"ar+ 6 ou 'REATE PRO'EDURE TE&TE 5 8ar1 9ar,"ar+ 6 onde %ar" : uma %ari5%el de entrada de dados &ara a &rocedure. A &assagem nesse caso : *eita &or %alor. Asta : a modalidade De:ault. A&enas de Sa-daN 'REATE PRO'EDURE TE&TE1 5 8ar+ OUT Num*er 6 onde %ar2 : uma %ari5%el de retorno de dados da &rocedure &ara o ambiente c?amador. 1e Antrada e Sa-daN 'REATE PRO'EDURE TE&TE; 5 8ar; IN OUT Num*er 6 onde %arI : uma %ari5%el de com&artil?amento de dados entre a &rocedure e o ambiente c?amador. A &assagem nesse caso : *eita &or re*er[ncia.

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

"0

Usando Par7metros

/s di%ersos ti&os de &arLmetros &odem ser usados 'untos em (ual(uer combina!oN /2SN Uma Stored 8rocedure nunca en,erga (ual(uer %ari5%el do ambiente c?amador. Toda a inter*ace entre o c?amador e a Stored 8rocedure : *eita atra%:s de &arLmetros. E-em!lo. Cria!o C0AATA 80/CA1U0A Aumento = sal5rio CD /UT Dumber4 ta,a CD Dumber4 Status /UT Dumber > AS 2A3CD sal5rioN Y sal5rio \ ta,aF C* sal5rio X P000 T?en StatusN Y "F Alse StatusN Y 0F And C* AD1 AumentoF

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

""

Usando Par7metros A,ecu!o a &artir de um bloco 8L#S9L 1ACLA0A Cursor c" Cs Select id4 salarQ @rom Am& *or U&date o* salarQF sal Am&.salarQZTS8AF 2A3CD @or rc" Cn c" Loo& Sal NY rcl.salarQF Aumento=Sal4"."0>F C* sal ] "P00 t?en U&date Am& Set salarQ Y sal U?ere Current o* c"F And C*F And Loo&F AD1F

A,erc-cios ".Crie uma tabela com o seguinte comandoN C0AATA TA2LA AU1CTA = ti&o Barc?ar2 ="0>4 usu5rio Barc?ar2 ="0>4 data 1ate4 te,to Barc?ar2=60>F Usando esta tabela crie a Stored 8rocedureN 8^Log = ti&o4 te,to >. 9ue inclu- uma lin?a na tabela de log usando a data e usu5rio corrente. 2. Crie uma Stored 8rocedure (ue aumente os %alores do sal5rio do em&regado &assando o C1 do em&regado. A &orcentagem de aumento de%e ser &assada como &arLmetro. = Use a 8^Log=>> A,N 8^Aumento ="0>F Log Y X = TAUMADT/T4 TALUD/"T4 0P-_UL-76T4TAumento determinado &ela dire!o da em&resaT> I. Crie uma Stored 8rocedure (ue %eri*i(ue o sal5rio de cada Am&regado e os em&regados (ue ti%er o sal5rio menor (ue 700 e o de&artamento DAMA Y T/&erationsT &romo%a um aumento de IPZ no sal5rio. 3erar na tabela AU1CTA o log desta altera)es. A,N 8^aumento" Log YX = TAUMADT/T 4 TSC/TTT 4 T0P-_UL-76T 4 TAumento no de&artamento /&erations4 &or &roduti%idadeT> /&cionalN $> Criar uma &rocedure (ue altera em $PZ o sal5rio dos em&regados (ue s!o subordinados aos gerentes (ue n!o tem comiss!o.

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

"2

;. 4un,tions 'riando 4un,tions

E-em!lo. C0AATA /0 0A8LACA @UDCTC/D Aumento = sal5rio Dumber > 0ATU0D DumberF AS au, DumberF 2A3CD au,N Y salario \ "." F return=au,>F AD1F '"amando 4un,tions

No &2/P/U&. No : &oss-%el c?amar uma *un!o diretamente do &rom&t do S9L8LUS. Use um bloco 8L#S9L. No P/3&2/ 1ACLA0A ` declara!o de %ari5%eisa 2A3CD ` Cnstru)es a no%osal N Y Aumento = sal^*unc>F `Cnstru)es a AD1F No &2/4OR%& 5 Dentro de um Trigger ou Pro,edure6 C*N 2L/C/".CAM8/" Y TST T?en N2L/C/"D/B/SALN Y Aumento = N 2L/C/".SAL@UDC>F Alse 0/LL2ACVF And C*N

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

"I

'om!arando 4un<es e Pro,edures CriandoN C0AATA 80/CA1U0A Aumento = salent CD Dumber4 salsaida /UT Dumber > AS 2A3CD salsaidaN Y salent \ "."0F AD1 AumentoF A,ecutandoN 1ACLA0A salini DumberF salno% DumberF 2A3CD ` Cnstru)es a Aumento = salini4salno%>F ` Cnstru)es a AD1N

CriandoN C0AATA @UDCTC/D Aumento = salent CD Dumber > 0ATU0D Dumber AS au, DumberF 2A3CD au, N Y salent \ "."0F 0eturn =au,>F AD1 AumentoF A,ecutandoN 1ACLA0A salini DumberF salno% DumberF 2A3CD ` Cnstru)es a salno% N Y Aumento= salini>F ` Cnstru)es a AD1N

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

"$

E-er,=,ios

".> Crie uma *un!o (ue receba o nGmero do tele*one no *ormato 06"7722M$0" =111@one> e de%ol%a o nGmero no *ormato =06">7722-M$0". A,N 8^@one =06"7722M$0">

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

"P

>. T?!i,os Es!e,iais em 4un,tions e &tored Pro,edures

Transa<es

As @unctions e Stored 8rocedures &odem incluir (ual(uer comando S9L ou 8L#S9L4 &or:m uma aten!o es&ecial de%e ser dada aos comandos de controle de transa)es. 1[ &re*er[ncia a colocar os comandos de controle de transa)es = C/MMCT4 0/LL2ACV 4 SABA8/CDT > no ambiente c?amador. Caso isto n!o se'a &oss-%el use dentro da Stored 8rocedure4 de &re*er[ncia4 a&enas comandos SABA8/CDT e 0/LL2ACV T/ savepoint4 de modo (ue n!o inter*ira na transa!o iniciada no c?amador. Um modo de lidar com esse &roblema : *a er a stored^&rocedure sinali ar uma e,ce&tion &ara o ambiente c?amador. Csso &ode ser *eito *acilmente usando o comandoN raise_application_error ( cdigo, mensagem ) /nde o c+digo do erro de%e ser um nGmero entre -20000 e -20777 e a mensagem de%er5 ser um te,to claro e e,&licati%o da situa!o do erro. Im!ortante. Caso o ambiente c?amador se'a um 1atabase Trigger4 uma transa!o distribu-da ou o S9L\@/0MS4 as &rocedures NO &odem conter nen?um comando de controle de transa!o.

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

"6

Transa<es

A,em&lo de Controle de Transa!o no c?amadorN C0AATA /0 0A8LACA 80/CA1U0A Atuali a = cod Cn Dumber4 aumento Cn Dumber4 status /UT Dumber > AS 2A3CD U&date tab Set %al Y %al \ aumento U?ere c+digo Y codF C* S9LZD/T@/UD1 T?en 8^&rocessamento = TABCS/T4 Tentati%a de altera!o - codigoT bb to^ c?ar =cod>bbT ine,istente T>F status N Y "F Alse status N Y 0F And C*F AD1 Atuali aF 1ACLA0A status Dumber 2A3CD ` Cnstru)es a atuali a =C14"04status> C* status ]X 0 T?em 0ollbacRF And C*F `Cnstru)es a CommitF AD1F

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

"M

&a=da de Dados

D!o e,istem comandos es&ec-*icos de entrada e sa-da de dados em blocos 8L#S9L. Do entanto4 *oram criadas &rocedures (ue su&ortam sa-da de in*orma)es4 &ermitindo retornar &ara o %-deo os resultados de selects ou %alores de %ari5%eis. Assas &rocedures en%iam in*orma)es &ara um bu**er acess-%el ao S9L8LUS ou S9L12A (ue &or sua %e &odem en%i5-las &ara tela. 8ara ati%ar a leitura e im&ress!o desse bu**er nesses &rodutos digite o seguinte comandoN &ET &ER9EROUTPUT ON Utili ando essas &rocedures torna-se &oss-%el e,ecutar certas tare*as (ue em outro caso necessitariam do uso de uma linguagem W/ST = A,N C4 Cobol etc>4 al:m disso &odemos utili ar o &rocesso de /UT8UT como um 1ebug rudimentar. Assas &rocedures s!oN Nome Descrio

12MS^/UT8UT = te,to>F Cnsere o te,to &ara o bu**er de sa-da 12MS^/UT8UT.DAU^LCDA Coloca uma marca de *im de lin?a no bu**er de sa-da. 12MS^/UT8UT.8UT^LCDA Cnsere o te,to e coloca a marca de *im de lin?a no bu**er.

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

"6

&a=da de Dados

E-em!lo. S9LX C0AATA /0 0A8LACA 80/CA1U0A debuge = ta,a Dumber>F AS au, DumberF 2A3CD 12MS^/UT8UT.8UT^LCDA = TComeo de A,ecu!oT>F Select Sum = salarQ> Cnto au, @rom em&F au,N Y au, \ta,aF 12MS^/UT8UT.8UT^LCDA = Balor de au, YXTbb To^c?ar =au,>>F 12MS^/UT8UT.8UT^LCDA= T@im de A,ecu!oT>F AECA8TC/D U?en /t?ers T?en 12MS^/UT8UT.8UT^LCDA= TArro na A,ecu!oT>F AD1F S9LX # S9LX SAT SA0BA0/UT8UT /D S9LX AEACUTA 1eburgando =".I0>F Eliminando Pro,edures e 4un,tions

XX ----------------10/8 80/CA1U0A-----------------nome-----------------------X XX---------------10/8 @UDCTC/D ----------------------nome------------------------X

E-em!lo. DROP PRO'EDURE &@!ro,essamanto1 DROP 4UN'TION aumento1

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

"7

Administrando os O*Aetos B I

Ao criarmos (ual(uer ob'eto no banco de dados4 o /racle arma ena-os em tabelas com %iews associadas. Assas %iews s!o di%ididas em tr[s categorias = All4 1ba e User > e atra%:s delas obtemos in*orma)es deles. Atra%:s da %iew USA0^S/U0CA : &oss-%el recu&erar o c+digo do ob'eto criadoN USA0^S/U0CA = cont:m o c+digo do ob'eto criado >N Dame TQ&e Line Te,t E-em!lo. 8ara recu&erar o te,to original da 8rocessamento crie o scri&t source.s(l com o seguinte conteGdoN set &agesi e P00 set linesi e 60 set *eedbacR o** set ?eading o** column te,t *ormat a60 trunc Select Te,t @rom User^Source U?ere Dame Y T80/CASSAMADT/T /rder 2Q LineF S9LX S&ool 8roc.s(l S9LX cSource 80/CA1U0A &rocessamanto = %ti&o Cn Barc?ar24 %te,to Cn Barc?ar2 > AS 2A3CD Cnsert into audite Balues = %ti&o4 User4 SQsdate4 %te,to > AECA8TC/D U?en /t?ers T?en 0ollbacRF And &rocessamanto S9LX S&ool /** /bsN A&esar de &odermos recu&erar o c+digo de uma &rocedure4 *unction ou &acRage atra%:s do dicion5rio de dados4 : aconsel?5%el criarmos um ar(ui%o com seus res&ecti%os c+digos. Dome do ob'eto Ti&o de ob'etoN @unction 4 8rocedure4 8acRage4 e 8acRage 2odQ Se(uencia do C+digo Te,to do C+digo

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

20

Administrando os O*Aetos B I

Atra%:s da Biew USA0^A00/0S : &oss-%el recu&erar (ue ti&o de erro ocorreu durante a cria!o do ob'etoN USA0^A00/0S = cont:m os erros da Gltima com&ila!o >N Dame TQ&e Se(uence Line 8osition Te,t E-em!lo. Caso tentemos criar a &rocedure &rocessamento com o scri&tN C0AATA /0 0A8LACA 80/CA1U0A &rocessamento = %ti&o Cn Barc?ar24 %te,to Cn Barc?ar2> AS 2A3CD Cnsert into auditori Balues = %ti&o4 User4 SQsdate4 %te,to> AECA8TC/D U?en /t?ers T?en 0ollbacRF And &rocessamentoF /bteremos uma mensagem comoN Message 22P not *oundF &roduct Y 8LUSI"F *acilitQ Y S8" 8or:m se usarmos os comandos a seguir obteremos uma in*orma!o bem mel?or sobre os errosN set linesi e "60 column 8/S column 1ASC0Cde/ *ormat at "P0 T0UDC set s&ace 2 select line bb T # T bb &osition 8/S4 te,t 1ASC0Cde/ *rom user^errorsF 8/S ----P#"M P#P 1ASC0Cde/ --------------------------------------------------------------8LS-0020"N identi*ier TAU1CT/0CT must be declared 8L#S9L Statement ignored Dome do /b'eto Ti&o do /b'etoN @unction 4 8rocedure4 8acRage4 e 8acRage 2odQ Se(uencia de Arros Lin?as do c+digo com Arro 8osi!o do erro na Lin?a do C+digo Te,to do Arro

Do e,em&lo acima o nome correto do /b'eto : AU1CTA e n!o AU1CT/0C O*s. / comando &COD ERROR tem o mesmo e*eito.

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

2"

'om!ilando

Ao ,riarmos uma 8rocedure ou @unction : *eita uma ,om!ilao desses ob'etos. Caso se'a identi*icado4 no momento e,ecu!o4 (ue um determinado ob'eto re*erenciado so*reu alguma modi:i,ao4 o &rograma ser5 re,om!ilado e ent!o e,ecutado. Atra%:s de seu dicion5rio de dados o /racle %eri*ica as rela)es e,istentes entre seus ob'etos. 1essa *orma ele %eri*ica os status desses ob'etos e submete a e,ecu!o ou recom&ila e e,ecuta. Do entanto4 (uando o ob'eto re*erenciado *or uma !ro,edure ou :un,tion (ue este'a em um banco de dados remoto4 teremos um tratamento ligeiramente di*erente a&+s uma altera!o nesses ob'etos. A !rimeira 8e (ue tentarmos e,ecutar a &rocedure local obteremos uma mensagem de erro4 mas na segunda tentati8a a re,om!ilao ser# autom#ti,a. Do caso de uma re*er[ncia a uma ta*ela ou outro ob'eto remoto (ue n!o uma *unction ou &rocedure NO ?a%er5 recom&ila!o autom5tica e ser5 necess5rio submeter as &rocedures ou *unctions 5 uma com&ila!o manual. Im!ortante. Um ob'eto &ode ser re*erenciado direta ou indiretamente. Um ob'eto : re*erenciado diretamente (uando uma &rocedure o cita em seu cor&o e indiretamente (uando a &rocedure se utili a de um terceiro ob'eto (ue o mani&ula. Mesmo os ob'etos (ue acessam outros indiretamente necessitariam de uma no%a recom&ila!o caso ?ou%esse altera!o em (ual(uer n-%el.

ALTA0 80/CA1U0A nome C/M8CLA ALTA0 @UDCTC/D nome C/M8CLA

E-em!lo. S9LX Alter 8rocedure &rocessamanto Com&ile S9LX # 8rocedure Altered

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

22

Administrando as Re:erEn,ias

Atra%:s da Biew USA0^1A8AD1ADCCAS : &oss-%el %eri*icar (uais s!o os ob'etos re*erenciadosN USA0^1A8AD1ADCCAS = cont:m as re*er[ncias do ob'eto>N Dame TQ&e 0e*erenced^/wner 0e*erenced^Dame 0e*erenced^TQ&e Dome do /b'eto Ti&o do /b'etoN @unction4 8rocedure4 8acRage e 8acRage 2odQ. 1ono do /b'eto 0e*erenciado Dome do /b'eto 0e*erenciado Ti&o do /b'eto 0e*erenciado

E-em!lo. ".> Beri*icando os ob'etos diretamente re*erenciadosN S9LX Select 0e*erenced^/wner AS9UAMA4 0e*erenced^Dame /2_AT/4 2 0e*erenced^TQ&e TC8/ I @rom User^1e&endencies $ U?ere Dame Y T80/CASSAMADT/TF 2> Beri*icando os ob'etos indiretamente re*erenciados. 8odemos criar um scri&t c?amado List^0e*.s(l comN 1ro& Table 0e*erenciaF C0AATA Table 0e*erencia AS Select \ @rom User^1e&endenciesF column /b'eto *ormat a2P column 0e*erenciado *ormat a2P column Ti&o^0e*erenciado *ormat a20 Select L&ad =T T42 \ Le%el> bb Dame /b'eto4 0e*erenced^Dame 0e*erenciado4 0e*erenced^TQ&e Ti&o^0e*erenciado @rom 0e*erencia U?ere 0e*erenced^/wner not in = TSSST4 T8U2LCCT4 TSSSTAMT> Connect bQ name Y &rior 0e*erenced^name Start Uit? DAMA Y T80/CASSAMADT/TF A,ecute o scri&t...

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

2I

Administrando os O*Aetos B II Atra%:s da Biew USA0^/2_ACTS conseguimos identi*icar (ual o status de um determinado ob'eto a&+s um comando de 11LN USA0^/2_ACTS= cont:m o status do comando de 11L>N /b'ect^Dame Dome do /b'eto /b'ect^Cd Cdenti*icador do /b'eto /b'ect^TQ&e Ti&o do /b'eto Created 1ata de Cria!o do /b'eto Last^1dl^Time 1ata do Gltimo Comando de 11L Time^Stam& Status do /b'etoN BALC14 CDBALC1 E-em!lo. 8odemos criar o scri&t /2_.s(l comN Column /b'eto @ormat a20 Column Ti&o @ormat a20 Column Status @ormat a"0 Select /b'ect^Dame /b'eto4 /b'ect^TQ&e4 Status @rom user^ob'ects U?ere /b'ect^Dame Y T80/CASSAMADT/TF S9LX c/b' /2_AT/ ---------80/CASSAMADT/ /2_ACT^TS8A ------------------80/CA1U0A STATUS ----------BALC1

S9LX Alter Table AU1CTA Modi*Q = Usu5rio Barc?ar2 =I0>>F Table altered S9LX c/b' /2_AT/ ---------80/CASSAMADT/ /2_ACT^TS8A ------------------80/CA1U0A STATUS ----------CDBALC1

S9LX Alter 8rocedure 80/CASSAMADT/ Com&ileF 8rocedure altered. S9LX c/b' /2_AT/ ---------80/CASSAMADT/ /2_ACT^TS8A ------------------80/CA1U0A STATUS ----------BALC1

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

2$

&inFnimos

8ara *a ermos re*er[ncias a &rocedures4 *unctions e &acRages de *orma trans&arente con%:m criarmos &inFnimos. E-em!lo. S9LX Connect usu5rio#sen?a S9LX A,ecute &rocessamento = TA%isoT4 TA,em&lo de SinfnimoT>FendF A00/0 at line"N /0A-06PP0N line"4 columnMN 8LS-00I"IN T80/CASSAMADT/T not declared in t?is sco&e /0A-06PP0N line"4 columnMN 8L#S9LN Statement ignored S9LX C0AATA SQnonQn !ro,essamento SQnonQn created. S9LX A,ecute !ro,essamento= TA%isoT4 TA,em&lo de SinfnimoT>F 8L#S9L &rocedure success*ullQ com&leted. $ene:=,ios de Pro,edures e 4un,tions @or SCWAMA.!ro,essamento1

'ontrole do a,esso aos o*Aetos do $an,o de Dados &ara usu5rios sem &ri%il:gio sobre eles. / usu5rio n!o necessita &ossuir4 &or e,em&lo o &ri%il:gio de insert em uma tabela caso e,ista alguma &rocedure (ue insira registros nela. 'ontrole da l?gi,a das transa<es do neg?,io e%itando (ue erros de &rograma!o a*etem a integridade e a segurana do banco. 'ontrole de ,?digo em um Gni,o lugar. E8itar o trabal?o do gerenciador &ara com&ilar blocos de comandos &ois estes '5 est!o com&ilados. Rea!ro8eitamento do ,?digo em mem?ria e%itando &arses de um mesmo comando = ou bloco de > c?amado &or %5rios usu5rios. Reduo no nGmero de ,"amadas do gerenciador4 redu indo tr5*ego na rede.

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

2P

H. Pa,Iages

Entendendo Pa,Iages

8acRage : um ob'eto do banco de dados (ue agru&a &rocedures4 *un)es4 %ari5%eis4 e,ce&tions e constantes (ue se relacionam4 &ro&orcionando uma mel?or organi a!o e %is!o dos a&licati%os (ue ir!o utili ar-se desses ob'etos. Um PA'(A)E est5 di%idido em duas &artesN -8ACVA3A S8ACC@CCATC/D = 1e*ini)es > -8ACVA3A 2/1S = Cor&o >

Entendendo Pa,Iages

DE'/ARAO = 8acRage S&eci*ication >N Cont:m somente as declara)es de &rocedures4 *un)es4 %ari5%eis4 constantes e e,ce&tions (ue ser!o re*erenciadas &osteriormente &elos a&licati%os a*ins. Assas declara)es s!o &Gblicas. A &arte declarati%a : obrigat+ria4 e atra%:s dela : *eita a inter*ace com os a&licati%os. Um &rogramador (ue utili e &rocedimentos do &acRage &recisa unicamente das in*orma)es contidas nesta &arteF nen?um dado a res&eito de como as rotinas s!o im&lementadas : necess5rio. Ale recebe in*orma)es como os nomes das %ari5%eis declaradas no &acRage ou (uais os &arLmetros (ue em uma determinada *un!o recebe.

'ORPO = 8acRage 2odQ >N Cont:m a de*ini!o = c+digo> das &rocedures4 *un)es4 cursores e e,ce&tions declaradas na &arte anterior = declara)es &Gblicas > e (ual(uer outro ob'eto necess5rio &ara o desen%ol%imento do=s> sub&rograma=s> = declara)es &ri%adas >. 8ara o desen%ol%imento de sistemas esta &arte n!o : obrigat+ria4 ou se'a durante o &ro'eto caso n!o se ten?a certe a de como ser5 o *lu,o de um &rograma mas tem-se a id:ia de seu ob'eti%o4 &odemos re*erenci5-lo a&esar do &rograma n!o estar com&leto. 1essa *orma : &oss-%el criar outros ob'etos = &rocedures4 *unctions4 blocos 8L#S9L4 etc> (ue utili am in*orma)es (ue ser!o codi*icadas &osteriormente.

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

26

'riando Pa,Iages

C0AATA = /0 0A8LACA > 8ACVA3A nome CS =AS> declara)es de &rocedures declara)es de *un)es declara)es de %ari5%eis declara)es de cursores declara)es de e,ce&tions AD1 nome C0AATA = /0 0A8LACA> 8ACVA3A 2/1S nome CS =AS> &rocedures *un)es %ari5%eis cursores e,ce&tions AD1 nome

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

2M

'riando Pa,Iages

E-em!lo1 = somente a &arte declarati%a> N C0AATA /0 0A8LACA 8ACVA3A MADTAM AS Usu5rio Barc?ar2 =20>N Y USA0F 8rocedure &rocessamento = Ti&o Cn Barc?ar24 Te,to Cn audite.Te,toZTS8A>F AD1 MADTAMF

E-em!lo+ = &acRage somente com in*orma)es declarati%as >N C0AATA /0 0A8LACA 8ACVA3A em&resa AS Usu5rio Barc?ar=20>N Y USA0F TQ&e 0ecem& Cs 0AC/01 = C+digo em&.idZTS8A4 Dome em&.*irst^name.ZTS8A>F 0egem& 0ecem&F TQ&e 0ecde&t Cs 0ecord = C+digo de&t.idZTS8A4 Dome de&t.nameZTS8A4 regiao de&t.regiao^idZTS8A>F 0egde&t 0ecde&tF AD1 em&resaF

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

26

'riando Pa,Iages

E-em!lo; = 8acRage com&leta>N C0AATA /0 0A8LACA 8ACVA3A MADTAM AS Usu5rio Barc?ar2=20>N Y USA0F 8rocedure &rocessamento= Ti&o Cn Barc?ar24 Te,to Cn audite.Te,toZTS8A>F AD1 MADTAMF C0AATA /0 0A8LACA 8ACVA3A 2/1S MADTAM CS 80/CA1U0A &rocessamento = %ti&o Cn Barc?ar24 %te,to Cn Barc?ar2> AS 2A3CD Sa%e&oint Sa*e^AddF Cnsert into audite Balues =%ti&o4 Usu5rio4 SQsdate4 %te,to>N AECA8TC/D U?en /t?ers T?en 0ollbacR to Sa*e^Add And 8rocessamentoF AD1 MADTAMF O$&. 8odemos criar se&aradamente cada &arte de um &acRage.

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

27

Re:eren,iando o*Aetos da Pa,Iage

No &2/3P/U&. S9LX AEACUTA MADTAM.&rocessamento=TABCS/T4 T8acRageT>F No P/3&2/ 1ACLA0A ` declara!o de %ari5%eisa 2A3CD `Cnstru)esa Select \ Cnto regem& @rom em&F ` Cnstru)esa %ANTE%.!ro,essamento = TABCS/T4 Tem&regados /VT>F AD1F No &2/4OR%& 5 Dentro de um trigger ou Pro,edure6 C* N 2L/C/".CAM8/" Y TST T?en %ANTE%.!ro,essamento=TABCS/T4 Tem&regados /V T>F Alse 0/LL2ACVF And C*F $ene:=,ios da Pa,Iage

8acRages &ro&orcionam um con'unto de bene*-cios tanto durante o desen%ol%imento de sistemas como em sua manuten!o e e,ecu!o. DURANTE O DE&EN9O/9I%ENTO. %odularidade. Com&reendendo os relacionamentos l+gicos e,istentes em um determinado sistema4 &odemos enca&sul5-los atra%:s de um &acRage. 1essa *orma cada &acRage : de *5cil com&reens!o4 as inter*aces s!o sim&les4 claras e bem de*inidas. Inde!endEn,ia de 'om!ilao. 8ara com&ilar um &rograma (ue use o &acRage basta (ue a es&eci*ica!o do &acRage este'a criada. 'ontrole do '?digo e O*Aetos. As&eci*icando (uais ob'etos s!o &Gblicos = %is-%eis e acess-%eis> e (uais s!o &ri%ados = de*inidos e utili ados internamente >.

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

I0

$ene:=,ios da Pa,Iage

DURANTE A %ANUTENO. 4#,il manuteno. Ao se alterar o cor&o de um &acRage4 di*erentemente das &rocedures e *unctions 4 n!o : necess5rio a recom&ila!o dos ob'etos (ue *a em re*er[ncia a &arte do &acRage bodQ alterada. Mas uma altera!o no &acRage s&eci*ication necessitar5 de uma recom&ila!o. DURANTE A E0E'UO. Per:orman,e. 9uando um &rograma de*inido em um &acRage : c?amado4 todo o &acRage : carregado &ara a mem+ria4 necessitando de menos C#/ nos &r+,imos acessos. 'ontrole em uma sesso. Cada sess!o aberta tem seu &r+&rio set de constantes4 cursores e %ari5%eis. Astas &ossuem %alores null na &rimeira %e (ue um &acRage : re*erenciado. Ao t:rmino de uma sess!o os %alores s!o &erdidos e TstartadosT com %alores null numa no%a sess!o aberta.

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

I"

Es,o!o da Pa,Iage

PA'(A)E

PJ$/I'O

DE'/ARAME& 9ari#8el AU0 Pro,edure teste1 Pro,edure teste+ 4un,tion 41

Pa,Iage &!e,i:i,ation

PRI9ADO

'NDI)O DO PA'(A)E Pro,edure teste; 4un,tion 4+ 9ari#8el Pa,Iage $odO

PJ$/I'O

Pro,edure teste1 Pro,edure teste+ 4un,tion 41

9ual(uer ob'eto declarado no PA'(A)E &PE'I4I'ATION ser5 PJ$/I'O &ara (ual(uer ambiente (ue o re:eren,ie. 9ual(uer ob'eto declarado &O%ENTE no PA'(A)E $ODK ser5 PRI9ADOL NO &odendo ser re:eren,iado &or outros ambientes. 8or:m4 internamente4 esses ob'etos s!o &Gblicos.

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

I2

Pro,edures %ultiBDatatO!e

Am certas situa)es : interessante (ue uma determinada *un!o &ossa receber mais de um ti&o de dado. Deste caso criarmos no &acRage %5rias *un)es com o mesmo nome4 cada uma aceitando um ti&o de dado di*erente. Do momento da c?amada o /racle determinar5 (ual *un!o de%er5 ser acionada. E-em!lo. Programa P/3&2/ 5Teste.sPl6. SAT SA0BA0/UT8UT /D 2A3CD #\ 8rograma c?ama a mesma &rocedure &assando ti&os di*erentes \# Multi^TQ&e.Teste =TTi&o CA0ACTA0T4 TUT>F Multi^TQ&e.Teste = TTi&o DUMA0CC/T4 $>F Multi^TQ&e.Teste = TTi&o 1ATAT4 SSS1ATA>F AD1F Resultado da E-e,uo. S9LX cTeste CWA0YX 8" Y Ti&o CA0ACTA0 82YU DUMYX 8" Y Ti&o DUMA0CC/ 82Y$ 1ATAYX 8" Y Ti&o 1ATA 82Y"$#06#7$ 8L#S9L &rocedure success*ullQ com&leted.

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

II

Pro,edures %ultiBDatatO!e

Pa,Iages &!e,i:i,ation. C0AATA /0 0A8LACA 8ACVA3A Multi^TQ&e is 80/CA1U0A Teste = S CD CWA04 g CD DUM2A0>F 80/CA1U0A Teste = S CD CWA04 g CD CWA0>F 80/CA1U0A Teste = S CD CWA04 g CD 1ATA>F AD1 Multi^TQ&eF # Pa,Iage $odO C0AATA /0 0A8LACA 8ACVA3A 2/1S Multi^TQ&e is 80/CA1U0A Teste = S CD CWA04 g CD DUM2A0> is 2A3CD 12MS^/UT8UT.8UT^LCDA =TDUM YX Tbb T8" Y Tbb Sbb T82 Y Tbb T/^CWA0=g>>F AD1F 80/CA1U0A Teste = S CD CWA04 g CD CWA0 > is 2A3CD 12MS^/UT8UT.8UT^LCDA = TCWA0 YXTbb T8" Y Tbb Sbb T82 Y Tbb g>F AD1F 80/CA1U0A Teste = S CD CWA04 g CD 1ATA > is 2A3CD 12MS^/UT8UT.8UT^LCDA=T 1ATA YX Tbb T8" Y Tbb Sbb T82 Y Tbb T/^CWA0=g4 T 11#MM#SST>>F AD1F AD1 Multi^TQ&eF

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

I$

Eliminando Pa,Iages E-em!lo. 10/8 8ACVA3A mantemF 10/8 8ACVA3A 2/1S mantemF O*s. / comando 10/8 8ACVA3A elimina tanto a es&eci*ica!o (uanto o cor&o do 8acRage. 'om!ilando 8ara com&ilar um 8acRage manualmente e,ecute os seguintes comandosN Alter Pa,Iage nome do &acRage 'om!ile Asse comando recom&ilar5 todo o &acRage. Alter Pa,Iage nome do &acRage 'om!ile &!e,i:i,ation Asse comando recom&ilar5 o 8acRage S&eci*ication Alter Pa,Iage nome do &acRage 'om!ile $odO Asse comando recom&ilar5 o 8acRage 2odQ. E-er,=,ios ">Crie um &acRage AM8^D/MA com uma *un)es (ue retornem os nomes do em&regado associado ao C1 &assados como &arLmetro . A,em&loN AM8^D/MA=20> YX TC?adT. 2>Crie um &acRage (ue mani&ule a tabela AU1CTA4 Cm&lemente como a seguir *un)esN a>Usr^Log.Cnclue=ti&o4te,to> YX Semel?ante ao &rocessamento. b>Usr^Log.Lista" =ti&o> YX Lista todas as entradas como ti&o es&eci*icado. c>Usr^Log.Lista2 =date> YX Lista todas as datas a &artir da data es&eci*icada. d>Usr^Log.Alimina =date> YX A&aga todas as entradas mais %el?as (ue a data e ?ora es&eci*icadas.

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

IP

Q. Data*ase Triggers 'riando Data*ase Triggers

E-em!lo. C0AATA /0 0A8LACA T0C33A0 Log^Altera!o 2A@/0A 1ALATA /0 U81ATA /D em& @/0 AACW 0/U UWAD = N new.salarQ X 2P00> 2A3CD &rocessamento =TALTA0Ade/T4 user4 sQsdate4 Talterado sal5rialT>F AECA8TC/D U?en /t?ers 0aise^a&&lication^error = - 200004 T Trigger @ailureT>F AD1F

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

I6

Ati8ao de Triggers

Triggers s!o ti&os es&eciais de stored &rocedures (ue s!o ati%ados automaticamente como e*eito de um comando de 1ML em uma tabela. LogoN No : &oss-%el c?amar e,&licitamente um trigger. No : &oss-%el &assar &arLmetros &ara um triggers. No : &oss-%el associar um trigger a (ual(uer ob'eto (ue n!o se'a uma tabela = e,N %iews4 sQnonQms etc..> Um trigger &ode ser ati%ado &or (ual(uer um dos comandos de 1ML. A,em&loN C0AATA T0C33A0 tr^ins A@TA0 CDSA0T /D tab C0AATA T0C33A0 tr^del A@TA0 1ALATA /D tab C0AATA T0C33A0 tr^u&d A@TA0 U81ATA /D tab /u &or (ual(uer con'unto de e%entos. E-em!lo. C0AATA T0C33A0 tr^all A@TA0 CDSA0T /0 1ALATA /0 U81ATA /D tab Al:m disso se o trigger es&eci*icar um U81ATA como e%ento : &oss-%el incluir uma lista de colunas o&cional no comando. E-em!lo. C0AATA T0C33A0 tr^col A@TA0 CDSA0T /0 U81ATA /@ codsocio4 nomsocio /D tab.

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

IM

'l#usulas $E4ORE3A4TER 9uanto ao momento de e,ecu!o os triggers &odem ser dis&aradosN $E4ORE e8ento . / trigger : e,ecutado a&+s a submiss!o do comando mas antes da sua e,ecu!o. /s dados s!o lidos e &assados &ara o trigger e caso o trigger se'a bem sucedido eles s!o lidos no%amente &ara a e,ecu!o da o&era!o. Caso o trigger *al?e4 a o&era!o : sus&ensa sem alterar o banco. Sugest!oN trigger^u&^date A4TER e8ento. / trigger : e,ecutado a&+s a e,ecu!o do comando mas antes da sua libera!o &ara o usu5rio. /s dados s!o lidos &ara a e,ecu!o da o&era!o e &assados &ara o trigger. Assim a &er*ormance : um &ouco mel"or do (ue na o&!o 2A@/0A. Caso o trigger *al?e4 a o&era!o : des*eita no banco.

Triggers de /in"a ou de 'omando /s triggers &odem ser ati%ados uma Gnica %e &or comando ou a cada lin?a mani&ulada. / de*ault : a ati%a!o &or comando sendo a ati%a!o &or lin?a de*inida &ela cl5usula 4OR EA'CROD. E-em!lo. Da tabelaN " 'od@so,io 8edro "Aliane 2Celso ICQnt?ia $Aduardo Nom@so,io

/ comandoN

1ALATA tab UWA0A cod^socio X 2F

Ati%aria a&enas uma %e o triggerN C0AATA T0C33A0 tr^com 2A@/0A 1ALATA /D tab 2A3CD ` comandoa AD1F Mas ati%aria trEs %e es o triggerN C0AATA T0C33A0 tr^com 2A@/0A 1ALATA /D tab @/0 AACW 0/U 2A3CD ` comandoa AD1F

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

I6

&ePuEn,ia de A,ionamento Um e%ento &ode ser associado a at: $ triggers (ue ser!o e,ecutados na seguinte ordemN

-$E4ORE &or comando -$E4ORE &or lin?a -A4TER &or lin?a -A4TER &or comando
E-em!lo. / comandoN 1ALATA Loca!o UWA0A cod^socio Y "F 8oderia acionarN $E4ORE !or ,omando BR 2A@/0A &or lin?a -X = &ara cada lin?a > A@TA0 &or lin?a -X = 8ara cada lin?a > A4TER !or ,omando BR

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

I7

A,essando 9alores de 'olunas O &oss-%el &es(uisar dentro de um trigger de lin?a4 os %alores das colunas antes e de&ois da e,ecu!o do comando ati%ador atra%:s de duas %ari5%eis de registro. . old BR cont:m os %alores antes da altera!o . neS BRcont:m os %alores de&ois da altera!o Seguindo a seguinte tabelaN E8ento U81ATA 1ALATA CDSA0T E-em!lo. C0AATA T0C33A0 tr^e,&l 2A@/0A U81ATA /D em& @/0 AACW 0/U 2A3CD I: 5.neS.salarO 3 . old.salarO 6 R 1.TU T"en &rocessamento=TA00/T4 TAumento maior (ue 60ZT>F AD1 C*F AD1F Alterando 9alores de 'olunas O &oss-%el os %alores de (ula(uer coluna4 de todas as lin?as a*etadas &elo e%ento ati%ador4 dentro de um trigger do ti&o 2A@/0A. 8ara isso basta alterar os %alores ligados a %ari5%el N new. E-em!lo. A%ento c?amadorN U81ATA em&regados SAT salario Y "000F TriggerN C0AATA T0C33A0 Acerta^Salario $E4ORE U81ATA /D em& 4OR EA'C ROD 2A3CD # \ 3arante (ue n!o ?a%er5 aumentos de mais (ue 60Z \ # . neS.salarO . Y MCD = N new.salarQ4 N old.salarQ \ ".6>F C* Nnew.manager^id is null T?en #\ Calcula a comiss!o da 8residencia \ # . neS.,ommission@!,t N Y Nnew.salarQ \ Nold.commission^&ctF END I:F AD1F .neS .old no%a lin?a lin?a %el?a DULL lin?a %el?a no%a lin?a DULL

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

$0

'l#usula DCEN /&cionalmente4 uma restri!o &ode ser inclu-da na de*ini!o do trigger es&eci*icando a cl5usula UWAD com uma e,&ress!o booleana. Assa e,&ress!o : a%aliada cada %e (ue o trigger : acionado. Caso ela receba o %alor T0UA o cor&o do trigger : e,ecutado normalmente4 entretanto caso o %alor da e,&ress!o se'a @ALSA ou DULL est!o o trigger n!o e,ecutado. 9uando a cl5usula UWAD : es&eci*icada : obrigat+rio a inclus!o da cl5usula @/0 AACW 0/U. Csto :4 a restri!o do UWAD s+ : %5lida &ara triggers de lin?a e : a%aliada indi%idualmente &ara cada lin?a a*etada &elo comando dis&arador do trigger. E-em!lo. C0AATA T0C33A0 tr^e,&l 2A@/0A U81ATA /D em& @/0 AACW 0/U DCEN = = Nnew.salarQ # Nold.salarQ > X ".60 > 2A3CD &rocessamento =TA00/T4 TAumento maior (ue 60ZT>F AD1F Des,o*rindo o E8ento '"amador Se um trigger trata mais de um ti&o de e%ento4 : &oss-%el descobrir (ual *oi o e%ento c?amador testando certas condi)es es&eciaisN -IN&ERTIN) -DE/ETIN) -UPDATE ou UPDATIN) 5 Vnome da ,olunaV6 E-em!lo C0AATA T0C33A0 tr^e,&l 2A@/0A 1ALATA /0 U81ATA /@ cod^socio4 nom^socio /D tab @/0 AACW 0/U 2A3CD C* DE/ETIN) T?en s&^addlog= TABCS/T4 T1eletando o socio T bb to^c?ar=Nold4cod^socio>>F AD1 C*F C* UPDATIN) = TC/1^S/CC/T> T?en s&^addlog= TABCS/T4 TAlterando o socio T bb to^c?ar= N new.cod^socio>>F And C*F C* UPDATIN) = TD/M^S/CC/T> T?en s&^addlog= TABCS/T4 TAlterando o nome do socioTbb Nold.nom^sociobbT&ara TbbNnew.nom^socio>F And C*F AD1F

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

$"

Administrando Triggers B I XX------ALTA0 T0C33A0------nome---------1CSA2LA-------------------------------XX------ALTA0 T0C33A0------nome---------ADA2LA-------------------------------XX------10/8 T0C33A0------nome------------------------------------------------------XX------ALTA0 TA2LA -------nome---------1CSA2LA ALL T0C33A0S---------XX------ALTA0 TA2LA--------nome---------ADA2LA ALL T0C33A0S----------9uando um trigger : criado ele : automaticamente ?abilitado. Dormalmente a &e(uena &erda de &er*ormance de%ido o acionamento do trigger : bem tolerada4 mas e,istem certas ati%idades em (ue seu *uncionamento n!o : dese'5%el4 &or e,em&loN 1urante um Insert as &ele,t ou uma carga com I%P ou &2/W/oader em (ue o usu5rio ten?a certe a de (ue nen"um dado entrado na tabela 8iolar# (ual(uer restri!o de integridade testado &elo trigger. 1urante uma manuten!o no banco de dados em (ue o usu5rio ten?a a ,erte a de (ue o trigger :al"ar#L &ois a integridade '5 est5 com&rometida. 1urante (ual(uer e%ento (ue dei,e ob'etos re*ernciados &elo trigger n!o dis&on-%eis. Csso &ode ocorre de%ido a uma *al?a de rede = no caso de ob'etos remotos> ou a uma tables&ace colocada ;o**-line<. 8ara desabilitar tem&orariamente um trigger use o comando ALTA0 T0C33A0 com a o&!o 1CSA2LA. 8ara reabilit5-lo use a o&!o ADA2LA. 8ara destruir um trigger use o comando 10/8 T0C33A0. 8ara desabilitar tem&orariamente todos os triggers associados a uma determinada tabela use o comando ALTA0 TA2LA com a o&!o 1CSA2LA ALL T0C33A0S. 8ara reabilit5-los4 use a o&!o ADA2LA ALL T0C33A0S. / comando 10/8 TA2LA automaticamente destr+i todos os triggers associados a tabela destru-da. E-em!lo. ALTA0 T0C33A0 tr^e,&l 1CSA2LAF ALTA0 T0C33A0 tr^e,&l ADA2LAF 10/8 T0C33A0 tr^e,&lF ALTA0 TA2LA loca!o 1CSA2LA ALL T0C33A0F ALTA0 TA2LA loca!o ADA2LA ALL T0C33A0F

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

$2

Triggers em 'as,ata

Um trigger ati%ado &or uma altera!o em uma tabela &ode4 e%entualmente4 *a er uma altera!o em outra tabela. Se esta segunda tabela tamb:m &ossuir um trigger ele tamb:m ser5 dis&arado. 9uando isso acontece : dito (ue os dois triggers est!o em cascata. / nGmero de triggers (ue &odem *icar em cascata : limitado &ela con*igura!o do /racle. Caso ocorram &roblemas4 &arLmetros como /8AD^CU0S/0S de%em ser alterados. E-em!lo. C0AATA T0C33A0 acerta^loca!o 2A@/0A CDSA0T /D item^loca!o @/0 AACW 0/U 2A3CD U&date lo,ao Set %al^total Y %al^total J Nnew.%al^loca!o U?ere num^loca!o Y Nnew.num^loca!oF AD1F C0AATA T0C33A0 loga^loca!o 2A@/0A U81ATA /D lo,ao @/0 AACW 0/U 2A3CD &rocessamento = TABCS/T4 TAlterando o %alor total da loca!oN T bb to^c?ar = Nnew.num^loca!o>F AD1F E-er,=,ios ">Crie uma tabela com o seguinte comandoN C0AATA TA2LA AM8L/3 = USUA0C/ BA0CWA02=20>4 /L1SALA0S DUM2A0="042>4 DAUSALA0S DUM2A0="042>4 1ATAALTA0ACA/ 1ATA>F Crie uma trigger na tabela AM8 &ara (ue (ual(uer altera!o *eita na table AM8 no cam&o SALA0S se'5 registrada na tabela AM8L/34 o usu5rio (ue alterou4 o sal5rio antigo e o no%o e a data da altera!o.

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

$I

'omandos 9#lidos em um Trigger

O &oss-%el utili ar dentro do cor&o de um trigger os seguintes ti&os de comandoN -9ual(uer comando ou estrutura do 8L#S9L 2.0 -SALACT = desde (ue SALACT CDT/ ou cursor > -U81ATA4 1ALATA ou CDSA0T No s!o &ermitidos os seguinte ti&os de comandoN -9ual(uer comando de 11L = C0AATA4 10/84 etc...> -0/LL2ACV4 C/MMCT ou SABA8/CDT -9ual(uer &rocedure (ue conten?a um dos comandos acima 9uando ?ou%er uma condi!o em (ue e,ista a necessidade de e%itar o sucesso do comando c?amador sinali e uma e,ce&tion com a &rocedure raise@a!!li,ation@error. E-em!lo. C0AATA T0C33A0 tr^e,&l 2A@/0A U81ATA /D em& @/0 AACW 0/U 2A3CD C* = Nnew.salarQ # Nold.salarQ > X ".60 T?en Cnsert into em&log %alues =user4 Nold.salarQ4 Nnew.salarQ4sQsdate>F raise@a!!li,ation@error = -200004 T Trigger@ailureT>F And C*F AD1F Outras Restri<es Do caso de um trigger de lin?a e,istem tr[s conceitos adicionais (ue de%em ser analisadosN

Ta*elas %utantes. Tabelas alteradas &elo e%ento c?amador ou alteradas atra%:s de uma o&!o CASCA1A de uma restri!o de integridade re*erencial. Ta*elas de Restrio. Tabelas (ue re*erenciam tabelas mutantes atra%:s de uma declara!o de restri!o de integridade re*erencial. Ta*elas Inde!endentesN Tabelas (ue n!o se relacionam a n-%el de integridade re*erencial a nen?uma tabela a*etada &elo e%ento dis&arador.

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

$$

Outras Restri<es Com rela!o a tabelas mutantes temos a seguinte regraN No : &ermitido e,ecutar 4 no cor&o do trigger de lin?a4 (ual(uer comando de 1ML = SALACT4 CDSA0T4 1ALATA ou U81ATA> sobre as tabelas mutantes. E-em!lo. C0AATA T0C33A0 Arrol A@TA0 1ALATA /D Titulo @/0 AACW 0/U 1ACLA0A Contador DumberF 2A3CD #\ A00/ de%ido a acesso na tabela mutante @ita \# U&date @ita Set cod^titulo Y 0 U?ere cod^titulo Y Nold.cod^tituloF #\ A00/ de%ido a acesso na tabela mutante Titulo \ # Select count =\> Cnto contador @rom TituloF AD1F Com rela!o a tabela de restri!o temos a seguinte regraN No : &ermitido e,ecutar4 no cor&o de trigger de lin?a4 um comando (ue altere uma coluna declarada em um 80CMA0S VAS4 @/0ACD3 ou UDC9UA de uma tabela de restri!o. E-em!lo. C0AATA T0C33A0 Arro2 A@TA0 1ALATA /D Titulo @/0 AACW 0/U 2A3CD # \ A00/ de%ido a altera!o da coluna @/0ACD3 VAS cod^titulo na tabela de restri!o @ita \ # C* U&dating = TC/1^TCTUL/T> T?en U&date @ita \ # set cod^titulo Y Nnew.cod^titulo w?ere cod^titulo Y Nold.cod^tituloF And C*F AD1F

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

$P

Permiss<es e Triggers 1o &onto de %ista das &ermiss)es de acesso4 um trigger : e,ecutado tomando como re*er[ncia o criador do trigger. Assim todos os ob'etos re*erenciados &elo trigger na sua de*ini!o de%er!o ser acess-%eis ao usu5rio criador do trigger na :&oca de seu acionamento &or &arte de (ual(uer usu5rio. Se o criador do trigger &erder os acessos necess5rios &ara sua e,ecu!o4 o trigger *al?ar5 mesmo (ue o usu5rio acionador ten?a esses acessos. Do e,em&lo a seguir temos duas situa)esN -/ usu5rio de desen%ol%imento cria um trigger (ue acessa uma tabela de log do sistema na (ual ele tem &ermiss!o de escrita. Um usu5rio comum &ode inserir dados na tabela de *ita e conse(uentemente acionar o trigger sem &roblemas. / usu5rio SQstem erradamente retira os &ri%il:gios de escrita do usu5rio de desen%ol%imento e libera esses &ri%il:gios &ara o usu5rio comum. Deste caso o trigger *al?a. Permiss<es e Triggers S9LX Connect SQstem#Manager S9LX 3rant All /n E%P/O) To usu5rioF S9LXConnect aluno"#aluno"F S9LXC0AATA trigger add^log 2e*ore U&date /n AM8 2egin Cnsert Cnto &K&TE%.E%P/O) Balues =user4....4...>F AndF S9LX 3rant U&date /n em& To Usu5rioF S9LX Connect Usu5rio#Usu5rio S9LX U&date em& Set salarQ Y "P00 U?ere id Y "0F S9LX 0em O Update tem sucesso e o log e gerado

S9LX Connect SQstem#Manager S9LX 3rant All /n E%P/O) To Usu5rioF S9LX 0e%oRe All /n E%P/O) @rom aluno"F S9LXConnect Usu5rio#Uus5rio S9LX U&date em& Set salarQ Y "P00 U?ere id Y "0F S9LX 0em O Update Falha

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

$6

E-em!los de Uso de Trigger

Da cria!o de logs o uso de triggers &ossibilita uma grande *le,ibilidade. Do e,em&lo abai,o o usu5rio : *orado a registrar em uma %ari5%el do &acRage AU1CT c?amada M/TCB/4 (ual o moti%o da altera!o *eita. E-em!lo. C0AATA T0C33A0 gra%a^log 2A@/0A 1ALATA /D em& Au, DumberF 2A3CD C* Audit.Moti%o is Dull T?en 0aise^A&lication^Arror= - 200004 TTrigger @ailureT>F Alse &rocessamento= TABCS/T4 SocioTbb To^C?ar=cod^socio> bb TdeletadoT>F &rocessamento=TM/TCB/T4 Audit.Moti%o>F And C* AD1F ---------------------------------------------------------O &oss-%el mel?orar a segurana de maneira n!o &ro%ida &elos recursos normais do /racle. E-em!lo. C0AATA T0C33A0 im&ro%e^sec 2A@/0A CDSA0T /0 1ALATA /0 U81ATA /D em& Au, DumberF 2A3CD Au, N Y To^Dumber= SQsdate4 TWW2$T> C* au, Dot 2etween 7 And "6 T?en &rocessamento= TABCS/T4 Tentati%a de acesso as T bb To^C?ar=au,> bbT?orasT> 0aise^A&lication^Arror=-20004 TTrigger @ailureT>F And C*F AD1F

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

$M

E-em!los de Uso de Trigger

O @re(uentemente Gtil criar de*aults %ari5%eis &ara cam&os o&cionais. Do e,em&lo abai,o a *ita s+ : inclu-da como ati%a durante a &rimeira semana do m[s. E-em!lo. C0AATA T0C33A0 seta^de*aults 2A@/0A CDSA0T /D *ita @/U AACW 0/U 2A3CD C*Nnew.ind^ati%a is Dull And To^Dumbers=SQsdate4 T11T>] Y M T?en Nnew.ind^ati%a N Y TSTF Alse Nnew.ind^ati%a N Y TDTF And C*F C*Nnew.ind^locada is Dull T?en Nnew.ind^locada N Y TDTF And C*F AD1F

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

$6

Administrando Triggers X II

Assim como no caso de Stored 8rocedures : &oss-%el &es(uisar in*orma)es sobre um trigger criado &elo usu5rio no dicion5rio de dados. Csto : *eito atra%:s de (ueries nas %iew USA0^T0C33A0S e USA0^T0C33A0^C/LS. A User^Triggers mostraN Trigger@Name Trigger@TO!e Triggering@E8ent =CDSA0T#1ALATA#U81ATA> Ta*le@Name Re:eren,ing@names Ta*le@Name D"en 'lause &tatus Des,ri!tion Trigger@$odO E-em!lo. 8ara gerar um ar(ui%o com o comando de cria!o do trigger 3era^LogN S9LX S&ool cria^trg S9LX SelectTC0AATA T0C33A0T4 descri&tion4 trigger^bodQ @rom User^Triggers U?ere Trigger^Dame Y T3A0A^L/3TF S9LX S&ool /** O*s. Assim como nos &acRages e stored &rocedures4 : aconsel?5%el guardar os scri&ts S9L de cria!o dos triggers. Dome do Trigger Ti&o= 2e*ore#A*ter & Comando#Lin?a> A%entos 1is&aradores 1ono da tabela associada ao trigger Domes atuais das %ari5%eis new e old Dome da tabela associada ao trigger Condi!o es&eci*icada no U?en Cndica se o trigger est5 ?abilitado ou n!o Te,to com o cabeal?o do trigger Te,to com o cor&o do trigger

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

$7

Administrando Triggers X II

A User^trigger^Cols arma ena in*orma)es sobre o uso de colunas no trigger. A User^Trigger^Cols mostraN Trigger@OSner Ta*le@Name Ta*le@OSner Ta*le@Name 'olumn@/ist 'olumn@Usage 1ono do Trigger=geralmente igual a Table^/wner> Dome do Trigger 1ono da tabela associada ao trigger Dome da tabela associada ao trigger Cndica se a coluna a&arece na cl5usula U&date=S#D> Cndica o ti&o de uso

E-em!lo. C0AATA T0C33A0 Teste 2A@/0A U81ATA /@ ind^ati%a /D @ita @/0 AACW 0/U 2A3CD C*Nold.ind^ati%a Y TST And Nnew.ind^ati%a Y TDT And Nold.ind^locada Y TST Nnew.ind^ati%a N Y T8TF And C*F AD1F TeremosN 'olumn@Name 'olumn@/ist Cnd^Ati%a SAS Cnd^Locada D/ 'olumn@Usage DAU CD /UT /L1 CD /L1 CD

Cndicando (ue Cnd^Ati%a *oi declarada na lista do e%ento U&date e (ue seu %alor DAU *oi usado &ara ler e alterar o %alor do cam&o e seu %alor /L1 *oi usado &ara leitura. A coluna Cnd^Locada tem seu %alor /L1 lido &elo trigger.

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

P0

E-er,=,ios

" > Crie um con'unto de triggers (ue controle o&era)es de 1ML nesta tabela4 seguindo as seguintes regras de neg+cioN a>1e%ido ao e,cesso de demiss!o de *uncion5rios4 a e,clus!o do banco s+ &ode ocorrer nas Se,ta *eiras.. b>Todas as o&era)es de Cnsert4 1elete ou U&date na tabela de AM8 de%em ser registradas em uma tabela de log.

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

P"

9ari#8eis do Ti!o 'ursor A %ers!o 2.I do 8L#S9L4 dis&on-%el a &artir do /racle Ser%er Bers!o M.I4 &ermite (ue se crie e utili e %ari5%eis do ti&o cursor. 1a mesma *orma (ue o cursor con%encional4 a %ari5%el do ti&o cursor a&onta &ara a lin?a corrente no con'unto de resultados de uma consulta (ue retorne mGlti&las lin?as4 mas ao contr5rio do cursor est5tico4 (ue est5 %inculado H uma Gnica consulta4 as %ari5%eis cursor &odem ser associadas a %5rias consultas4 at: mesmo dentro de um mesmo &rograma. Bari5%eis do ti&o cursor s!o %erdadeiras %ari5%eis 8L#S9L4 %oc[ &ode associar no%os %alores a ela e &assa-la como argumento a sub&rogramas. Uma %ari5%el do ti&o cursor : como um &onteiro nas linguagens C e 8ascal4 ela guarda a &osi!o na mem+ria =endereo> de um ob'eto ao in%:s de guardar o &r+&rio ob'eto. 8ortanto (uando %oc[ declara uma %ari5%el do ti&o cursor %oc[ est5 criando um &onteiro e n!o um ob'eto. / &rinci&al bene*-cio da %ari5%el do ti&o cursor : (ue ela &ro%[ um mecanismo &ara se &assar resultados de consultas entre di*erentes &rogramas 8L#S9L4 ou ainda entre &rograma 8L#S9L cliente e &rograma ser%idor. Am um ambiente cliente#ser%idor4 &or e,em&lo4 um &rograma do lado cliente &oderia abrir a %ari5%el do ti&o cursor e comear a e,trair seus dados4 e ent!o &assar essa %ari5%el como argumento a uma &rocedure arma enada no ser%idor. Aste &rograma &oderia ent!o continuar a e,trair seus dados e &assar a %ari5%el de %olta ao cliente &ara (ue este *ec?e o cursor. Caracter-sticas das %ari5%eis cursor As %ari5%eis do ti&o cursor &ermitem (ue %oc[N Associe uma %ari5%el do ti&o cursor com di*erentes consultas em tem&os di*erentes durante a e,ecu!o de seu &rograma. Uma %ari5%el do ti&o cursor &ode ser usada &ara e,trair dados de di*erentes con'untos de resultados. 8asse uma %ari5%el do ti&o cursor como argumento a um &rocedimento ou *un!o. Boc[ &ode com&artil?ar o resultado de uma consulta com outros &rocedimentos. Am&regue toda a *uncionalidade de cursores est5ticos. Boc[ &ode utili ar as declara)es /8AD4 @ATCW e CL/SA e re*erenciar os atributos ZCS/8AD4 Z@/UD14 ZD/T@/UD1 e Z0/UC/UDT em %ari5%eis do ti&o cursor. Associar o conteGdo de uma %ari5%el do ti&o cursor =inclusi%e seu con'unto de resultados> a outra %ari5%el do ti&o cursor.

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

P2

1eclarando o ti&o 0A@ CU0S/0 e a %ari5%el do ti&o cursor A cria!o de %ari5%eis do ti&o cursor : *eita em duas eta&asN &rimeiro %oc[ de*ine um ti&o 0A@ CU0S/0 e ent!o declara a %ari5%el como sendo da(uele ti&o. A sinta,e &ara se criar um ti&o de re*er[ncia a cursor : a seguinteN TS8A nome^ti&o^cursor CS 0A@ CU0S/0 h0ATU0D ti&o^retornadoiF /nde nome^ti&o^cursor : o nome do ti&o e ti&o^retornado : a es&eci*ica!o do dado retornado &elo ti&o cursor. / ti&o^retornado &ode ser (ual(uer estrutura %5lida &ara uma clausula 0ATU0D de um cursor normal4 de*inida usando o atributo Z0/UTS8A ou re*erenciando um registro =record> &re%iamente de*inido. A clausula 0ATU0D : o&cional4 e (uando usada4 o ti&o : dito j*ortej &ois *ica atado a um ti&o record4 ou ti&o row. 9ual(uer %ari5%el do ti&o cursor declarada de um ti&o j*ortej &ode a&enas ser utili ada com declara)es S9L (ue retornem dados do mesmo ti&o da declara!o usada na clausula 0ATU0D. 8or outro lado4 o ti&o cursor (ue n!o &ossui a clausula 0ATU0D : dito j*racoj e &ode ser utili ado de *ormas muito mais *le,-%eis4 isto :4 &ode ser utili ado com consultas (ue retornem (ual(uer estrutura de dados. Uma %e declarado o ti&o 0A@ CU0S/0 %oc[ &ode declarar a %ari5%el da(uele ti&o4 como mostrado no seguinte e,em&loN 1ACLA0A -- Criando o ti&o TS8A 1e&tCurTQ& CS 0A@ CU0S/0 0ATU0D de&tZ0/UTS8AF -- Criando a %ari5%el de&t^c% 1e&tCurTQ&F 2A3CD ... AD1F O im&ortante lembrar (ue a declara!o de uma %ari5%el do ti&o cursor n!o cria um ob'eto cursor. 8ara (ue isto ocorra : necess5rio usar a sinta,e /8AD @/04 (ue cria um no%o ob'eto cursor e o associa H %ari5%el. /utra obser%a!o im&ortante : (ue %ari5%eis cursor n!o &ossuem &ersist[ncia de estado &or serem a&enas &onteiros4 n!o &odendo &ortanto serem re*erenciadas a&+s o *im da e,ecu!o do &rocedimento (ue abriu o cursor. Abrindo uma %ari5%el do ti&o cursor =/8AD - @/0> A declara!o /8AD - @/0 associa o cursor com uma consulta (ue retorne mGlti&las lin?as4 e,ecuta a consulta e identi*ica o con'unto de res&ostas. A sinta,e &ara a declara!o :N /8AD `nome^%ari5%el^cursor b N%ari5%el^cursor^de^ambientea @/0 declara!o^s(lF onde %ari5%el^cursor^de^ambiente : uma %ari5%el declarada em um ambiente 8L#S9L como o S9L\8lus ou &rograma 8ro\C4 e declara!o^s(l : (ual(uer declara!o SALACT (ue n!o &ossua a clausula @/0 U81ATA. /utras declara)es /8AD - @/0 &odem abrir a mesma %ari5%el do ti&o cursor &ara di*erentes consultas4 n!o sendo necess5rio &ara isto *ec?a-lo antes. A,traindo dados da %ari5%el do ti&o cursor =@ATCW>

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

PI

Assim como com cursores est5ticos4 &ara se obter o resultado da consulta : utili ada a declara!o @ATCW (ue e,trai as lin?as uma a uma da %ari5%el do ti&o cursor4 e &ossui a seguinte sinta,eN @ATCW `nome^%ari5%el^cursor b N%ari5%el^cursor^de^ambientea CDT/ registroF @ATCW `nome^%ari5%el^cursor b N%ari5%el^cursor^de^ambientea CDT/ %ari5%el" h4%ari5%el2 ...iF 9uando a %ari5%el do ti&o cursor *oi declarada como sendo de um ti&o j*ortej4 o com&ilador 8L#S9L %eri*ica se a estrutura dos dados a&+s a clausula CDT/ s!o com&at-%eis com a estrutura da consulta associada H %ari5%el do ti&o cursor4 %eri*ica tamb:m se o nGmero de %ari5%eis : corres&ondente ao nGmero de colunas retornadas &ela consulta. Caso contr5rio ser5 gerado um erro. / erro ir5 ocorrer em tem&o de com&ila!o se a %ari5%el *or de um ti&o j*ortej e em tem&o de e,ecu!o se a %ari5%el *or de um ti&o j*racoj. Am tem&o de e,ecu!o4 a 8L#S9L e%oca a e,ce&tion 0/UTS8A^MCSMATCW. @ec?ando uma %ari5%el do ti&o cursor =CL/SA> A declara!o CL/SA desabilita a %ari5%el do ti&o cursor. 1e&ois disto o con'unto de resultados associado : inde*inido. A sinta,e : a seguinteN CL/SA `nome^%ari5%el^cursor b N%ari5%el^cursor^de^ambienteaF -------------------------------------------------------------------------------A,em&los de %ari5%eis cursor A,em&lo " Aste e,em&lo cria uma &acRage c?amada L/_A com a &rocedure 80/1UT/ (ue retorna os dados re*erentes ao &roduto &assado como argumento. Asta &rocedure utili a uma %ari5%el do ti&o cursor &ara *a er a consulta de&endendo do ti&o do &roduto4 se o &roduto *or um li%ro =c+digo "> o cursor ser5 associado a uma consulta H tabela LCB0/S4 caso o &roduto se'a um disco =c+digo 2> o cursor ser5 associado a uma consulta H tabela 1CSC/S. -- YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY -8ACVA3A AS8ACC@CCATC/D -- YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY C0AATA /0 0A8LACA 8ACVA3A L/_A CS 80/CA1U0A 80/1UT/=t-tulo^in CD BA0CWA02>F AD1 L/_AF # -- YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY -8ACVA3A 2/1S -- YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY C0AATA /0 0A8LACA 8ACVA3A 2/1S L/_A CS @UDCTC/D 9UAL^C/1C3/=t-tulo^in CD BA0CWA02> 0ATU0D DUM2A0 CS c+digo^&roduto DUM2A0F 2A3CD

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

P$

SALACT codigo CDT/ c+digo^&roduto @0/M TCTUL/S UWA0A TCTUL/ Y t-tulo^inF 0ATU0D c+digo^&rodutoF AECA8TC/D UWAD D/^1ATA^@/UD1 TWAD 0ATU0D DULLF AD1 9UAL^C/1C3/F 80/CA1U0A 80/1UT/=t-tulo^in CD BA0CWA02> CS TS8A ti&o^cursor CS 0A@ CU0S/0F -- Ti&o cursor =um ti&o j*racoj> %ar^cursor ti&o^cursorF -- A %ari5%el cursor c+digo^&roduto DUM2A0F li%ros^rec LCB0/SZ0/UTS8AF -- Um record discos^rec 1CSC/SZ0/UTS8AF -- Um record 2A3CD c+digo^&roduto NY 9UAL^C/1C3/=t-tulo^in>F C@ c+digo^&roduto CS DULL TWAD 12MS^/UT8UT.8UT^LCDA=T8roduto n!o cadastrado.T>F ALSA C@ c+digo^&roduto Y " TWAD /8AD %ar^cursor @/0 SALACT \ @0/M LCB0/S UWA0A TCTUL/ Y t-tulo^inF @ATCW %ar^cursor CDT/ li%ros^recF 12MS^/UT8UT.8UT^LCDA=TTkTUL/ N Tbbli%ros^rec.titulo>F 12MS^/UT8UT.8UT^LCDA=TA1CT/0A N Tbbli%ros^rec.editora>F 12MS^/UT8UT.8UT^LCDA=T80Ad/ N Tbbli%ros^rec.&reo>F ALSA /8AD %ar^cursor @/0 SALACT \ @0/M 1CSC/S UWA0A TCTUL/ Y t-tulo^inF @ATCW %ar^cursor CDT/ discos^recF 12MS^/UT8UT.8UT^LCDA=TTkTUL/ N Tbbdiscos^rec.titulo>F 12MS^/UT8UT.8UT^LCDA=T80Ad/ N Tbbdiscos^rec.&reo>F AD1 C@F CL/SA %ar^cursorF AD1 C@F AD1 80/1UT/F AD1 L/_AF # A &acRage &ode ser criada4 su&ondo-se (ue o c+digo este'a no ar(ui%o L/_A.S9L e (ue o ambiente utili ando se'a o S9L\8lus4 da seguinte *ormaN S9LX cL/_A.S9L A sua utili a!o : da *ormaN S9LX AEACUTA L/_A.80/1UT/=T/0ACLA 8L#S9L 80/30AMMCD3T>F (ue retornariaN TkTUL/ N /0ACLA 8L#S9L 80/30AMMCD3 A1CT/0A N /T0ACLLS & ASS/CCATAS4 CDC.

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

PP

80Ad/ N "2 8L#S9L &rocedure success*ullQ com&leted. -------------------------------------------------------------------------------A,em&lo 2 Uma outra *orma de utili a!o de %ari5%eis do ti&o cursor : mostrada neste segundo e,em&lo. O criada uma &acRage com declara)es de ti&os &ara %ari5%eis cursor e &rocedimentos &ara abrir o cursor e &ara e,trair seus dados. --YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY -8ACVA3A AS8ACC@CCATC/D --YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY C0AATA /0 0A8LACA 8ACVA3A em&^data AS TS8A em&^%al^c%^tQ&e CS 0A@ CU0S/0 0ATU0D em&Z0/UTS8AF 80/CA1U0A o&en^em&^c% =em&^c% CD /UT em&^%al^c%^tQ&e4de&t^number CD CDTA3A0>F 80/CA1U0A *etc?^em&^data =em&^c% CD em&^%al^c%^tQ&e4 em&^row /UT em&Z0/UTS8A>F AD1 em&^dataF # --YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY -8ACVA3A 2/1S --YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY C0AATA /0 0A8LACA 8ACVA3A 2/1S em&^data AS --YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY 80/CA1U0A o&en^em&^c% =em&^c% CD /UT em&^%al^c%^tQ&e4 de&t^number CD CDTA3A0> CS 2A3CD /8AD em&^c% @/0 SALACT \ @0/M em& UWA0A de&tno Y de&t^numberF AD1 o&en^em&^c%F --YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY 80/CA1U0A *etc?^em&^data =em&^c% CD em&^%al^c%^tQ&e4 em&^row /UT em&Z0/UTS8A> CS 2A3CD @ATCW em&^c% CDT/ em&^rowF AD1 *etc?^em&^dataF AD1 em&^dataF # Agora um bloco 8L#S9L (ue utili a as &rocedures da &acRage &ara reali ar consultas. 1ACLA0A -- 1eclara uma %ari5%el cursor do ti&o de*inido na &acRage em&^curs em&^data.em&^%al^c%^tQ&eF de&t^number de&t.de&tnoZTS8AF em&^row em&Z0/UTS8AF

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

P6

2A3CD de&t^number NY 20F -- jAbrej o cursor usando uma %ari5%el em&^data.o&en^em&^c%=em&^curs4 de&t^number>F -- A,trai os dados e os e,ibe L//8 em&^data.*etc?^em&^data=em&^curs4 em&^row>F AECT UWAD em&^cursZD/T@/UD1F 12MS^/UT8UT.8UT=em&^row.ename bb T T>F 12MS^/UT8UT.8UT^LCDA=em&^row.sal>F AD1 L//8F AD1F # Asta *orma de im&lementa!o &ermite a reutili a!o do c+digo da &acRage em %5rios outros blocos e &rocedures sem a necessidade de se saber como est5 de*inida a consulta. 1esta *orma4 se ?ou%er a necessidade de se alterar4 &or e,em&lo4 a clausula UWA0A da consulta associada ao cursor4 a&enas o c+digo da &acRage necessita ser alterado4 os blocos e &rocedures (ue utili arem esta &acRage n!o &recisam so*rer altera!o. A,em&loI / e,em&lo seguinte mostra a &assagem de %ari5%eis do ti&o cursor como &arLmetro H &rocedures. O criada uma &acRage4 contendo a&enas os ti&os cursores4 e duas &rocedures. A &rimeira &rocedure recebe como &arLmetro uma %ari5%el do ti&o cursor e a (uantidade de lin?as a serem e,traidas e e,ibe o nome do *uncion5rio e seu sal5rio4 a segunda &rocedure (ue aceita os mesmos &arLmetros da &rimeira e,ibe o nome4 a *un!o e o sal5rio. C0AATA /0 0A8LACA 8ACVA3A TC8/S AS TS8A em&^ti&o^cur CS 0A@ CU0S/0 0ATU0D AM8Z0/UTS8AF TS8A de&t^ti&o^cur CS 0A@ CU0S/0 0ATU0D 1A8TZ0/UTS8AF AD1 TC8/SF # C0AATA /0 0A8LACA 80/CA1U0A AEC2A^SALA0C/ =em&^%cursor^in CD ti&os.em&^ti&o^cur4 (uant^in CD DUM2A0> CS em&^rec AM8Z0/UTS8AF 2A3CD @/0 indice CD " .. (uant^in L//8 @ATCW em&^%cursor^in CDT/ em&^recF AECT UWAD em&^%cursor^inZD/T@/UD1F 12MS^/UT8UT.8UT^LCDA=em&^rec.enamebbT Tbbem&^rec.sal>F AD1 L//8F AD1 AEC2A^SALA0C/F # C0AATA /0 0A8LACA 80/CA1U0A AEC2A^C/M8LAT/=em&^%cursor^in CD ti&os.em&^ti&o^cur4 (uant^in CD DUM2A0> CS

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

PM

em&^rec AM8Z0/UTS8AF 2A3CD @/0 indice CD " .. (uant^in L//8 @ATCW em&^%cursor^in CDT/ em&^recF AECT UWAD em&^%cursor^inZD/T@/UD1F 12MS^/UT8UT.8UT^LCDA=em&^rec.enamebbT Tbbem&^rec.'obbbT Tbbem&^rec.sal>F AD1 L//8F AD1 AEC2A^C/M8LAT/F # 1e&ois de criadas a &acRage e as &rocedures =usando cnome^ar(ui%o> o e,em&lo &ode ser testado com o seguinte bloco 8L#S9LN 1ACLA0A em&^cursor ti&os.em&^ti&o^curF 2A3CD /8AD em&^cursor @/0 SALACT \ @0/M AM8 /01A0 2S SAL 1ASCF AEC2A^SALA0C/=em&^cursor4$>F AEC2A^C/M8LAT/=em&^cursor4P>F CL/SA em&^cursorF AD1F 9uando a segunda &rocedure comea a e,trair os dados4 ela comea a &artir do &onto onde a &rimeira &rocedure &arou. / mesmo aconteceria com (ual(uer &rocedure se o bloco 8L#S9L '5 ti%esse e,tra-do algum dado antes de c?ama-la.

Pa,Iage UT/@4I/E A &acRage UTL^@CLA &ermite (ue &rogramas 8L#S9L acessem ar(ui%os do sistema o&eracional &ara leitura e escrita. A &acRage &ode ser utili ada tanto em &rogramas arma enados no banco de dados (uanto em a&lica)es do lado cliente4 tais como as escritas com o /racle @orms. 1esta *orma : &oss-%el interagir com os ar(ui%os da esta!o de trabal?o e ao mesmo tem&o com os ar(ui%os do disco do ser%idor. A &acRage UTL^@CLA est5 dis&on-%el com o 8L#S9L a &artir da %ers!o 2.I / Ti&o @CLA^TS8A 9uando %oc[ abre um ar(ui%o4 o 8L#S9L retorna um ?andle (ue ser5 utili ado em seu &rograma. Aste ?andle : do ti&o @CLA^TS8A. @CLA^TS8A : um registro 8L#S9L cu'os cam&os &ossuem todas as in*orma)es necess5rias ao UTL^@CLA4 tais como o nome do ar(ui%o4 sua locali a!o e o modo &ara o (ual ele *oi aberto. Uma declara!o de um ?andle : da seguinte *ormaN 1ACLA0A *ile^?andle UTL^@CLA.@CLA^TS8AF 2A3CD ...

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

P6

/ acesso as ar(ui%os do sistema : restrito a a(ueles situados em diret+rios es&ec-*icos. Uma lista de diret+rios acess-%eis est5 arma enada na *orma de um &arLmetro do ar(ui%o init.ora / acesso n!o : recursi%o aos subdiret+rios. A 8rocedure @CL/SA @CL/SA : usada &ara *ec?ar um ar(ui%o aberto4 sua es&eci*ica!o :N 80/CA1U0A @CL/SA=@CLA^CD CD UTL^@CLA.@CLA^TS8A>F A 8rocedure @CL/SA^ALL Asta &rocedure *ec?a todos os ar(ui%os abertos. A es&eci*ica!o &ara ela :N 80/CA1U0A @CL/SA^ALLF A &rocedure @CL/SA^ALL ser5 Gtil (uando %oc[ ti%er aberto %5rios ar(ui%os e dese'ar ter certe a de (ue todos *oram *ec?ados antes de terminar o &rograma. /utra utili a!o da &rocedure @CL/SA^ALL : no tratamento de e,ce&tions4 garantindo (ue os ar(ui%os se'am *ec?ados mesmo (ue o &rograma termine de uma *orma irregular. A 8rocedure @@LUSW A &rocedure @@LUSW re&assa o conteGdo do bu**er UTL^@CLA &ara o ar(ui%o es&eci*icado. Aste &rocedimento garante (ue todas as in*orma)es do bu**er se'am escritas no ar(ui%o antes (ue se *aa uma leitura. Sua es&eci*ica!o :N 80/CA1U0A @@LUSW =@CLA^CD CD UTL^@CLA.@CLA^TS8A>F A @un!o @/8AD A *un!o @/8AD abre o ar(ui%o es&eci*icado e retorna um ?andle (ue de%e ser utili ado &ara mani&ular o ar(ui%o. A es&eci*ica!o &ara a *un!o :N @UDCTC/D @/8AD =L/CATC/D CD BA0CWA024 @CLA^DAMA CD BA0CWA024 @CLA^M/1A CD BA0CWA02> 0ATU0D UTL^@CLA.@CLA^TS8AF / &arLmetro jL/CATC/Dj : uma string (ue es&eci*ica o diret+rio onde se encontra o ar(ui%o. - 8ara o 1/S # UindowsN TCNlC/MM/Dl1A2U3T - 8ara o Uni,N T#usr#adminT / &arLmetro j@CLA^DAMAj es&eci*ica o nome do ar(ui%o a ser aberto

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

P7

/ &arLmetro j@CLA^M/1Aj4 (ue es&eci*ica o modo de abertura do ar(ui%o4 &ode ser um dos tr[s seguintesN 0 - Abre o ar(ui%o somente &ara leituraF U - Abre o ar(ui%o &ara leitura e sobrescri!o4 neste modo todas as lin?as s!o remo%idasF A - Abre um ar(ui%o &ara leitura e adi!o. As no%as lin?as s!o adicionadas no *inal ao ar(ui%o. A 8rocedure 3AT^LCDA Asta &rocedure l[ uma lin?a de dados do ar(ui%o es&eci*icado. /s dados lidos s!o arma enados na %ari5%el *ornecida como &arLmetro. A es&eci*ica!o &ara a &rocedure :N 80/CA1U0A 3AT^LCDA =@CLA^CD CD UTL^@CLA.@CLA^TS8A4 LCDA /UT BA0CWA02>F / &arLmetro jLCDAj de%e ser grande o su*iciente &ara receber todos os dados at: o &rimeiro sinal de retorno de carro =carriage return>ou de *im de ar(ui%o4 caso contr5rio ser5 gerada a e,ce&tion jBALUA^A00/0j. Se a &rocedure tentar ler de&ois do *im do ar(ui%o ser5 gerada a e,ce&tion jD/^1ATA^@/UD1j. A @un!o CS^/8AD A *un!o CS^/8AD retorna T0UA se o ar(ui%o es&eci*icado esti%er aberto e @ALSA caso contr5rio. Sua es&eci*ica!o :N @UDCTC/D CS^/8AD =@CLA^CD CD UTL^@CLA.@CLA^TS8A> 0ATU0D 2//LAADF 8rocedure DAU^LCDA Asta &rocedure insere um ou mais caracteres de no%a lin?a no ar(ui%o es&eci*icado4 sua es&eci*ica!o :N 80/CA1U0A DAU^LCDA =@CLA^CD CD UTL^@CLA.@CLA^TS8A4 DUM^LCDAS CD 8LS.CDTA3A0 NY ">F onde jDUM^LCDASj : o nGmero de lin?as a serem inseridas no ar(ui%o4 seu %alor de*ault : um. A 8rocedure 8UT A &rocedure 8UT coloca dados no ar(ui%o es&eci*icado. Sua es&eci*ica!o :N 80/CA1U0A 8UT =@CLA^CD CD UTL^@CLA.@CLA^TS8A4 CTAM^CD CD BA0CWA02>F 80/CA1U0A 8UT =@CLA^CD CD UTL^@CLA.@CLA^TS8A4 CTAM^CD CD 1ATA>F 80/CA1U0A 8UT =@CLA^CD CD UTL^@CLA.@CLA^TS8A4 CTAM^CD CD DUM2A0>F 80/CA1U0A 8UT =@CLA^CD CD UTL^@CLA.@CLA^TS8A4 CTAM^CD CD 8LS^CDTA3A0>F

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

60

A &rocedure 8UT adiciona os dados H lin?a corrente do bu**er UTL^@CLA. Boc[ de%e utili ar a &rocedure DAU^LCDA &ara *orar (ue os dados se'am escritos na &r+,ima lin?a. A 8rocedure 8UT@ A &rocedure 8UT@ coloca dados no ar(ui%o es&eci*icado4 mas ela usa um *ormato &ara os dados &ara inter&retar os di*erentes elementos a serem escritos &ara o ar(ui%o. Boc[ &ode &assar at: cinco elementos di*erentes &ara a &rocedure 8UT@. Sua es&eci*ica!o :N 80/CA1U0A 8UT@ =@CLA^CD CD UTL^@CLA.@CLA^TS8A4 @/0MAT^CD CD BA0CWA024 CTAM"^CD CD BA0CWA02 h4 CTAM2^CD CD BA0CWA02 ... CTAMP^CD CD BA0CWA02i >F onde @/0MAT^CD : uma string (ue es&eci*ica o *ormato dos itens no ar(ui%o. Al:m de te,to4 o &arLmetro @/0MAT^CD &ode &ossuir os seguintes modelosN Zs - coloca o item corres&ondente no ar(ui%o. Boc[ &ode utili ar at: P modelos Zs na string de *ormata!o. ln - coloca um caracter de no%a lin?a no ar(ui%o. D!o ?5 limites &ara o uso deste modelo na string de *ormata!o. A &rocedure aceita a&enas itens do ti&o BA0CWA024 se %oc[ dese'ar utili ar ti&os di*erentes ser5 necess5rio utili ar a &rocedure T/^CWA0 &ara con%erte-los antes. A 8rocedure 8UT^LCDA Asta &rocedure escre%e dados &ara um ar(ui%o e adiciona imediatamente ao *inal dos dados um caracter de no%a lin?a. Sua es&eci*ica!o :N 80/CA1U0A 8UT^LCDA =@CLA^CD CD UTL^@CLA.@CLA^TS8A4 CTAM^CD CD BA0CWA02>F A &rocedure 8UT^LCDA s+ aceita dados no *ormato ST0CD34 caso %oc[ dese'e escre%er outros ti&os de dados ser5 necess5rio utili ar a &rocedure T/^CWA0 &ara con%erter os dados. Tratando e,ce)es de C#/ A &acRage UTL^@CLA o*erece um con'unto de e,ce&tions (ue s!o es&ec-*icas &ara a &acRage. /utras e,ce&tions4 como D/^1ATA^@/UD14 tamb:m de%em ser utili adas. Um e,em&lo de tratamento de erros :N AECA8TC/D UWAD D/^1ATA^@/UD1 TWAD 12MS^/UT8UT.8UT^LCDA=TLeitura de&ois do *im do ar(ui%o.T>F UWAD UTL^@CLA.CDBALC1^/8A0ATC/D TWAD 12MS^/UT8UT.8UT^LCDA=TD!o : &oss-%el escre%er em ar(ui%o de a&enas leitura.T>F AD1F Uma lista das e,ce&tions (ue &odem ser utili adas4 com suas descri)es : dada a seguirN

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

6"

D/^1ATA^@/UD1 A &rocedure 3AT^LCDA tentou ler al:m do *im do ar(ui%o. UTL^@CLA.CDTA0DAL^A00/0 /correu um erro interno. A o&era!o n!o *oi com&letada. UTL^@CLA.CDBALC1^@CLAWAD1LA / *ile?andle es&eci*icado n!o : %5lido ou n!o *oi aberto. UTL^@CLA.CDBALC1^M/1A / modo *ornecido em @/8AD n!o : %5lido. UTL^@CLA.CDBALC1^/8A0ATC/D /&era!o in%5lida &ois o ar(ui%o n!o e,iste ou a o&era!o n!o : com&at-%el ao modo &ara o (ual o ar(ui%o *oi aberto. UTL^@CLA.CDBALC1^8ATW / camin?o *ornecido n!o : acess-%el. UTL^@CLA.0AA1^A00/0 Arro es&ec-*ico do sistema o&eracional na leitura do ar(ui%o.

UTL^@CLA.U0CTA^A00/0 Arro es&ec-*ico do sistema o&eracional na tentati%a de se escre%er &ara o ar(ui%o. BALUA^A00/0 / te,to lido com 3AT^LCDA : grande demais &ara caber no bu**er es&eci*icado. A,em&lo de utili a!o da &acRage UTL^@CLA 1ACLA0A *ile^?andle UTL^@CLA.@CLA^TS8AF nome BA0CWA02=I0> F retrie%ed^bu**er BA0CWA02="00>F 2A3CD -- abre o ar(ui%o &ara escrita -- o ar(ui%o init.ora de%e ter o &arametro utl^*ile^dir Y CNlTAM8 *ile^?andle NY UTL^@CLA.@/8AD=TcNltem&T4Tteste.t,tT4TUT>F -- insere uma lin?a no ar(ui%o de*inido &or *ile^?andle UTL^@CLA.8UT^LCDA=*ile^?andle4 TLin?a " =um> T>F SALACT 3L/2AL^DAMA CDT/ nome @0/M 3L/2AL^DAMAF -- insere outra lin?a no ar(ui%o de*inido &or *ile^?andle UTL^@CLA.8UT@ =*ile^?andle4TColuna Dome tem o %alor Zs lnT4 nome>F -- *ec?a o ar(ui%o UTL^@CLA.@CL/SA=*ile^?andle>F -- abre o ar(ui%o &ara leitura *ile^?andle NY UTL^@CLA.@/8AD=TcNltem&T4Tteste.t,tT4T0T>F -- inicio de um bloco &ara leitura 2A3CD L//8 -- le uma lin?a do ar(ui%o de*inido em *ile^?andle e a e,ibe UTL^@CLA.3AT^LCDA =*ile^?andle4 retrie%ed^bu**er>F 12MS^/UT8UT.8UT^LCDA=retrie%ed^bu**er>F AD1 L//8F AECA8TC/D -- (uando *or *im do ar(ui%o UWAD D/^1ATA^@/UD1 TWAD -- *ec?a o ar(ui%o UTL^@CLA.@CL/SA=*ile^?andle>F

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

62

AD1F AECA8TC/D UWAD UTL^@CLA.CDBALC1^8ATW TWAD 12MS^/UT8UT.8UT^LCDA=TCamin?o in%5lido.T>F UTL^@CLA.@CL/SA=*ile^?andle>F UWAD UTL^@CLA.0AA1^A00/0 TWAD 12MS^/UT8UT.8UT^LCDA=TArro durante a leitura.T>F UTL^@CLA.@CL/SA=*ile^?andle>F UWAD UTL^@CLA.U0CTA^A00/0 TWAD 12MS^/UT8UT.8UT^LCDA=TArro durante a escrita.T>F UTL^@CLA.@CL/SA=*ile^?andle>F UWAD /TWA0S TWAD 12MS^/UT8UT.8UT^LCDA=TArrommT>F UTL^@CLA.@CL/SA=*ile^?andle>F AD1F /utro A,em&lo set ser%erout&ut onF declare %Lin?a^detal?e BA0CWA02=I2M6M>F %Lin?a^Cabecal?o BA0CWA02=600>F id UTL^@CLA.@CLA^TS8AF %Ar(ui%o BA0CWA02=20> NY TmQ^*ileTF err BA0CWA02="00>F num DUM2A0F 2A3CD id NY UTL^@CLA.@/8AD=T#CL12awbT4Tacumer&awb.t,tT4 T0T4 ;+YQY >F UTL^@CLA.@CL/SA=id>F %Lin?a^Cabecal?o NY TTASTA 1A A09UCB/TF -%Ar(ui%o NY Tteste.t,tTF id NY UTL^@CLA.@/8AD=T#CL12awbT4%Ar(ui%o4 TUT4 I2M6M >F UTL^@CLA.8UT^LCDA=id4%Lin?a^Cabecal?o>F UTL^@CLA.@CL/SA=id>F -AECA8TC/D UWAD /TWA0S TWAD err NY S9LA00MF num NY S9LC/1AF 12MS^/UT8UT.8UT^LCDA=err>F 12MS^/UT8UT.8UT^LCDA=num>F UTL^@CLA.@CL/SA=id>F AD1F #

Consulting Tecnologia & Sistemas Ltda www.consulting.com.br

Você também pode gostar