Você está na página 1de 4

Protheus Embedded SQL

O objetivo do Embedded SQL facilitar a escrita e a leitura de consultas ao banco de dados. Para isso, foi definida uma sintaxe para que se possa escrever a consulta diretamente no cdigo AdvPL, sem ter que montar cdigos complexos que dificultam a leitura do comando. Importante: No Protheus, para o ambiente AS/400 fica vetada a cria o de consultas !"# e de !tore Procedures, uma ve$ que essa plataforma adota outro padr o de desenvolvimento. Para esse tratamento, ser% utili$ada a express o a seguir& TcSrvType <> AS/400. 1. Disponibilidade do recurso O Embedded SQL est% dispon'vel apenas para o Protheus (.)) e sua utili$a o est% dividida em& compila o e execu o do programa fonte. Para ser poss'vel compilar um programa fonte com o cdigo escrito no formato Embedded SQL, deve ser utili$ado um Protheus vers o (.)) com Build igual ou superior a *.++.+,+*-)p, em um ambiente com repositrio para .op/onnect 01PO234.op5. Lembre-se: Para a 3uilds do Protheus (.)) com vers o da #63()) superior 7 #63-++,+8+- 9 ()) n o ser% necess%ria a aplica o de Patch. :% as vers;es de #63 anteriores devem ser atuali$adas por meio do patch dispon'vel do endereo abaixo& ftp&<<ftp.microsiga.com.br<dem<mptp())=embedded!ql.ptm

.exto extra'do da apostila 3anco de 2ados ministrado pelo instrutor >merson .obar.

Exemplos bsicos de utilizao onte sem Embedded SQL SELECT SE2.E2_PREFI !" SE2.E2_#$%" E2_E%ISSA! FR!% & Re'S()#*+e,SE2- & SE2 ./ERE SE2.E2_FILIAL = 0 & 1F2)2*),SE3- & 4 A#5 SE2.E2_PREFI ! = 0 & cPre6217 & 4 A#5 SE2.5_E_L_E_T_ = 0 0 !R5ER 89 &Re'S()!r:er,SE2-

cQuery := cQuery &= cQuery &= cQuery &= cQuery &= cQuery &=

:;$<eAre*, .T." T!PC!##" Tc=e>Qry,""cQuery-"E2TE%P" .T." .T. TcSe'F2e):,E2TE%P" E2_E%ISSA!" 5" ? onte com Embedded SQL C7)u+> E2_E%ISSA! *< 5*'e A#7P*r<erA SELECT SE2.E2_PREFI !" SE2.E2_#$%" SE2.E2_E%ISSA! FR!% AT*;)e:SE2A SE2 ./ERE SE2.E2_FILIAL = A1F2)2*):SE2A A#5 SE2.E2_PREFI ! = AE1p:cPre6217A A#5 SE2.A#7'5e)A !R5ER 89 A!r:er:SE2A E>:SQL !. "intaxe O bloco onde ser% escrito o !>#>/. deve ser sempre iniciado com ?#e$in"%L &lias@ e finali$ado como ?End"%L@ Partes do cdigo que devem ser substitu'das aparecem entre os sinais '. >stas express;es possuem tratamento especial em momento de execu o. "ualquer instru o colocada entre #e$in"%L ... End"%L, que n o sejam uma express o ' ... ', ser% inserida na consulta a ser enviada para o banco de forma literal. Aari%veis, express;es e fun;es aparecem iniciado com 'exp:'. >m (olumn, especificar campos da consulta que s o do tipo data, lgico ou numrcio 0Date, Logic, Number5. >sta linha substitui a chamada da fun o )c"et ield. '*oParcer' indica que a consulta n o deve passar pela fun o ?(han$e%uer+@ antes de ser enviada ao banco de dados. /aso n o

8e@2>SQL A)2*< E2TE%P

.exto extra'do da apostila 3anco de 2ados ministrado pelo instrutor >merson .obar.

especifico o default a string da consulta a ser passada automaticamente pela fun o ?(han$e%uer+@. ')able.,c&lias-' substitui a chamada da fun o .et"/l*ame0,&lias-1. '*otDel' substitui a express o D2E2L2E2)2 3 4 4. '5rder:,alias-' substitui a chamada da fun o& "/l5rder0,&lias---0Index6e+0111. >xistem trBs op;es para o uso do COrder. ! o elas& '5rder:,c&lias-' /orresponde& "/l5rder0,&lias---0Index5rder0111 '5rder:,c&lias-7 ,nIndice-' /orresponde& "/l5rder0,&lias---0Index5rder0nIndice111 '5rder:,c&lias-7 ,n*ic8-' /orresponde& "/l5rder0,&lias---0D#*ic8Index6e+0c*ic8111 Importante: N o permitido incluir fun;es no meio do cdigo >mbedded. !e precisar o valor deve ser guardado em uma vari%vel antes do in'cio do 3egin!"#. Exemplo: >T*+Cp7 := =e'E2B*)7rS2Ce,8e@2>SQL A)2*< E2TE%P C7)u+> E2_E%ISSA! *< 5*'e" E2_BAL!R *< #u+er2c,>T*+Cp7"2E>:SQL 9. Erro de compilao /aso seja encontrado algum argumento inv%lido ao especificar as colunas, ou ocorra algum erro de sintaxe nas express;es, a compila o do programa fonte interrompida com a ocorrBncia ?"intax Error@, informado a linha em que a primeira ocorrBncia foi encontrada. :. Depurao N o poss'vel depurar o bloco do cdigo fonte compreendido entre as instru;es #e$in"%L ... End"%L. >sse bloco n o aceita pontos de parada de depura o 0BreakPoint5. D coloca o de pontos de parada deve ser reali$ada entes ou depois deste bloco. ;. uno auxiliar < =etLast%uer+01

O cursor uma vari%vel que deve ser declarada e utili$ada para arma$enar o resultado de uma consulta quando ela retorna mais de uma linha. /om isso poss'vel promover navegabilidade entre essas linhas.
.exto extra'do da apostila 3anco de 2ados ministrado pelo instrutor >merson .obar.

Dps a abertura do cursor no Dlias especificado, a fun o =etLast%uer+ retorna um vetor com cinco elementos, em que est o dispon'veis as seguintes informa;es sobre a consulta executada. E)F 9 cDlias 9 Dlias usado para abrir o cursor E-F 9 c/onsulta 9 /onsulta executada EGF 9 a/ampos 9 Aetor de campos com critrios de convers o especificados EHF 9 lNoParser 9 /aso .). n o foi utili$ada %uer+(han$e na string original E,F 9 n.ime!pend 9 .em em segundos utili$ado para a abertura do cursor >. Exemplo a?anado de utilizao onte com Embedded SQL 8e@2>SQL A)2*< E2TE%P C7)u+> E2_E%ISSA! *< 5*'e" E2_BAL!R *< #u+er2c,>T*+Cp7A#7P*r<erA SELECT E2_PREFI !" E2_#$%" E2_F!R#ECE" E2_L!DA" E2_BAL!R FR!% AT*;)e:SE2 SE2 ./ERE E2_FILIAL = A1F2)2*)A A#5 E2_PREFI ! 8ET.EE# AE1p:+v_p*r0EA A#5 AE1p:+v_p*r02A A#5 E2_#$% 8ET.EE# AE1p:+v_p*r0FA A#5 AE1p:+v_p*r04A A#5 E2_F!R#ECE = AE1p:+v_p*r03A A#5 E2_L!DA = AE1p:+v_p*r0GA A#5 SE2.A#7'5e)A !R5ER 89 A!r:er:SE2"EA E>:SQL .e@erAncia Para obter mais informa;es sobre o >mbedded !"#, basta acessar o site da 2ocumenta o >letrInica Jicrosiga 02>J5, acessando a seguinte seqKBncia de menu& PrincipalB& )ecnolo$ia ProtheusB#anco de DadosB)op(onnect

.exto extra'do da apostila 3anco de 2ados ministrado pelo instrutor >merson .obar.