PL / SQL Tutorial: Lahat ng Kailangan Mong Malaman Tungkol sa PL / SQL

Saklaw ng tutorial ng PL / SQL ang lahat ng detalyadong paliwanag ng lahat ng kinakailangang konsepto na kinakailangan upang makabisado ang PL / SQL na programa sa iba't ibang mga halimbawa

Ang PL / SQL ay isang wikang pamproseso na nagtagumpay sa mga pagkukulang na kinakaharap Istrakturang Wika ng Query . Ito ay isang extension ng SQL at maaari pa namin magamit ang mga query sa SQL nang walang anumang abala sa anumang PL / SQL application o programa. Sa PL / SQL tutorial na ito, dadaan kami sa mga pangunahing konsepto ng PL / SQL nang detalyado. Ang mga sumusunod na paksa ay sakop sa artikulong ito.



Ano ang PL / SQL?

Ito ay nangangahulugang extension ng wika sa pamaraan sa nakabalangkas na wika ng query . Ang Oracle ay lumikha ng PL / SQL na umaabot sa ilang mga limitasyon ng SQL upang magbigay ng isang mas komprehensibong solusyon para sa pagbuo ng mga application na kritikal na misyon na tumatakbo sa orakulo .



logo-pl / sql tutorial - edureka

Mga Tampok

  • Nagbibigay ang PL / SQL ng pag-andar ng isang pamaraan na pamamaraan tulad ng paggawa ng desisyon, pag-ulit, atbp.

  • Gamit ang isang solong utos, ang PL / SQL ay maaaring magpatupad ng isang bilang ng mga query.



  • Maaari din nating magamit muli ang mga yunit ng PL / SQL tulad ng mga pag-andar, pag-trigger, pamamaraan, atbp na nakaimbak sa database pagkatapos ng paglikha.

  • Ang PL / SQL ay mayroon ding isang exception block paghawak na humahawak ng mga pagbubukod sa PL / SQL.

  • Posible rin ang malawakang pag-check ng error gamit ang PL / SQL



  • Ang mga application na nakasulat sa PL / SQL ay portable sa iba pang mga hardware at operating system na ibinigay na oracle ay dapat na pagpapatakbo.

PL / SQL kumpara sa SQL

SQL PL / SQL
Ang SQL ay isang solong query na ginagamit upang maisagawa ang mga pagpapatakbo ng DDL at DMLAng PL / SQL ay isang bloke ng mga code na ginagamit upang tukuyin ang isang buong programa o pamamaraan / pagpapaandar, atbp
Hindi nito tinukoy kung paano kailangang gawin, sa halip ay tumutukoy sa kung ano ang dapat gawinTinutukoy ng PL / SQL kung paano kailangang gawin
Nagpapatupad ito ng isang solong pahayagNagsasagawa ito ng isang bloke ng mga pahayag nang sabay-sabay.
Pangunahing ginagamit ang SQL upang manipulahin ang dataAng PL / SQL, sa kabilang banda, ay ginagamit upang lumikha ng mga aplikasyon
Hindi ito maaaring maglaman ng PL / SQL codeDahil ito ay isang extension ng SQL, maaari itong maglaman ng SQL code dito

I-block ang Mga Istraktura Sa PL / SQL

Karaniwang inaayos ng PL / SQL ang code sa mga bloke. Ang code block na walang pangalan ay kilala bilang isang anonymous block. Ito ay kilala bilang anonymous block dahil hindi ito nai-save sa oracle database. Tingnan natin ang isang hindi nagpapakilalang bloke sa PL / SQL.

[DECLARE] pahayag ng deklarasyon [MAGSIMULA] mga pahayag sa pagpapatupad [EXCEPTION] mga pahayag sa pagbubukod ADD /

Sa pagtingin sa diagram na ipinakita sa itaas, makikita natin na ang istraktura ng bloke ay nahahati sa apat na bahagi, ibig sabihin, deklarasyon, pagsisimula, pagbubukod at pagtatapos. Subukan nating maunawaan kung paano gumagana ang istraktura ng pag-block sa PL / SQL. Sa labas ng lahat ng mga seksyong ito, ang seksyon ng pagpapatupad ay sapilitan at pahinga ang lahat ay opsyonal.

  • MAGPAHAYAG ginamit ang keyword para sa seksyon ng pagdedeklara ay ginagamit upang ideklara ang mga uri ng data at istraktura tulad ng mga variable, pag-andar, atbp.

  • MAGSIMULA ginamit ang keyword para sa seksyon ng pagpapatupad. Ito ay sapilitan at naglalaman ng lahat ng mga pahayag na kailangang ipatupad. Ang bloke na ito ay kung saan tinukoy ang lohika ng negosyo, maaari naming gamitin ang parehong pamaraan o SQL na pahayag sa bloke na ito.

  • Ang PAGKALABASAN ginagamit ang keyword para sa seksyon ng pagbubukod. Naglalaman ito ng lahat ng mga pahayag ng pagbubukod.

  • WAKAS minamarkahan ng keyword ang pagtatapos ng bloke at ang paatras na slash na '/' ay nagsasabi sa tool na iyong ginagamit (Oracle Database Tool) upang maisagawa ang PL / SQL block.

Narito ang isang simpleng halimbawa upang maipakita kung paano namin magagamit ang PL / SQL code.

MAGSIMULA Null END /

Ngayon alam na natin kung paano gumagana ang istraktura ng pag-block sa PL / SQL, ipaunawa sa amin ang iba't ibang aspeto ng PL / SQL tulad ng pagdedeklara, pagbibigay ng pangalan at pagtatalaga ng mga halaga sa mga variable.

Mga variable ng PL / SQL

Ang variable sa PL / SQL ay karaniwang isang pangalan na nag-iiba o pansamantalang lokasyon ng imbakan na sumusuporta sa isang partikular na uri ng data. Tingnan natin kung paano natin magagamit ang mga variable sa isang PL / SQL na programa.

Mga Panuntunan sa Pagbabago ng Variable

Sinusunod ng PL / SQL ang mga sumusunod na panuntunan para sa pagbibigay ng pangalan ng mga variable.

  • Ang variable ay hindi maaaring higit sa 31 mga character

  • Ang pangalan ng variable ay dapat magsimula sa isang ASCII character. Dahil ang PL / SQL ay case-sensitive, ang isang malalaking titik at isang maliit na titik ay magkakaiba-iba ng variable.

  • Matapos ang unang character, kailangang magkaroon ng isang espesyal na character ($, _) o anumang numero.

Pagpapangalan ng mga kombensiyon

Gamitin ang mga sumusunod na kombensyon sa pagngangalang nakalista sa ibaba upang magamit ang mga variable.

Pauna Uri ng datos
v_VARCHAR2
n_BILANG
t_TABLE
r_ROW
d_PETSA
b_BOOLEAN

Deklarasyon

Subukan nating maunawaan kung paano ginagawa ang variable na deklarasyon sa PL / SQL

Kasama sa deklarasyon ang variable na pangalan na sinusundan ng uri ng data at pinaghihiwalay ng isang kalahating titik. Ang sumusunod ay isang halimbawa upang maipakita kung paano mo maipapahayag ang isang variable sa PL / SQL.

DECLARE v_name VARCHAR (25) n_age NUMBER (3) BEGIN Null END

Maaari mo ring idagdag ang haba ng uri ng data tulad ng nagawa namin sa halimbawa sa itaas.

Mga Angkla

Karaniwang tumutukoy ang anchor sa paggamit ng% TYPE keyword na upang ideklara ang isang variable na may uri ng data na nauugnay sa uri ng data ng isang haligi ng isang partikular na haligi sa isang talahanayan.

Tingnan ang isang halimbawa upang maunawaan ito. Ipagpalagay na mayroon kaming isang talahanayan na mga EMPLOYEES, maaari naming gamitin ang mga anchor sa sumusunod na paraan.

DECLARE v_name EMPLOYEE.NAME% TYPE n_age EMPLOYEE.AGE% TYPE BEGIN Null END /

Takdang Aralin

Ang variable na pagtatalaga ay medyo madali, maaari naming gamitin ang operator ng pagtatalaga upang magtalaga ng mga halaga sa isang variable. Ipinapakita ng sumusunod na halimbawa kung paano kami maaaring magtalaga ng mga halaga sa isang variable.

DECLARE v_name VARCHAR (20) n_course VARCHAR (10) BEGIN v_name = 'edureka' v_course = 'sql' END /

Pasimula

Maaari naming gawing simula ang isang halaga para sa variable sa seksyon ng deklarasyon din. Ipinapakita ng sumusunod na halimbawa kung paano namin mapasimulan ang mga halaga sa isang variable.

DECLARE v_name VARCHAR (20) = 'edureka' n_course VARCHAR (10) = 'sql' BEGIN Null END /

Ngayon alam na natin kung paano tayo maaaring gumana sa mga variable, subukan nating unawain kung paano natin gagamitin ang mga pagpapaandar sa PL / SQL.

Pag-andar Sa PL / SQL

Ang isang pagpapaandar sa PL / SQL ay karaniwang isang pinangalanang bloke na nagbabalik ng isang halaga. Kilala rin ito bilang isang subroutine o isang subprogram, ipinapakita ng sumusunod na syntax kung paano namin magagamit ang mga pagpapaandar sa PL / SQL.

LILIKHA [O PALITAN] FUNCTION function_name [(parameter_1 [IN] [OUT] data_type, parameter_2 [IN] [OUT] data_type, parameter_N [IN] [OUT] data_type] BALIK ang return_data_type AY NAGSIMULA ang mga pahayag na bumalik return_data_type EXCEPTION END /

Una sa lahat, dapat mong tukuyin ang isang pangalan ng pag-andar pagkatapos ng keyword. Ang pangalan ng pag-andar ay dapat magsimula sa isang pandiwa. Ang isang pagpapaandar ay maaaring wala, isa o higit pang mga parameter na tinukoy namin sa mga parameter. Kailangan nating tukuyin ang uri ng data ng bawat parameter nang malinaw, at pagkatapos ay dumating ang mode na maaaring alinman sa mga sumusunod.

  • SA - Ang IN parameter ay isang read-only na parameter.

  • OUT - Ito ay isang parameter na sumulat lamang

  • SA LABAS - Ang parameter na IN OUT ay parehong parameter na read-write.

Narito ang isang simpleng halimbawa upang maipakita kung paano namin ginagamit ang mga pagpapaandar sa PL / SQL.

LILIKHA O PALITAN ANG FUNCTION try_parse (iv_number IN VARCHAR2) RETURN NUMBER AY NAGSISIMULI SA PAGBABALIK sa_number (iv_number) EXCEPTION KAPAG ang iba NOON BALIK NIND END

Pagtawag sa Isang Pag-andar

Subukan nating tawagan ang pagpapaandar na ginawa natin sa isang hindi nagpapakilalang bloke sa sumusunod na halimbawa.

Itakda ang SERVEROUTPUT SA SIZE 1000000 DECLARE n_x number n_y number n_z number BEGIN n_x: = try_parse ('256') n_y: = try_parse ('29 .72 ') n_z: = try_parse (' pqrs ') DBMS_OUTPUT.PUT_LINE (n_UT. DBMS_OUT n_y) DBMS_OUTPUT.PUT_LINE (n_z) END /

Maaari din nating tawagan ang pagpapaandar sa isang Piling pahayag din. Ngayong alam na natin kung paano natin magagamit ang mga pagpapaandar sa PL / SQL, subukan nating unawain kung paano tayo gumagana sa mga pamamaraan sa PL / SQL.

Pamamaraan ng PL / SQL

Ang isang pamamaraan ay karaniwang isang bloke na gumagawa ng isang tiyak na gawain. Gamit ang isang pamamaraan maaari naming balutin o i-encapsulate ang kumplikadong lohika sa negosyo at muling gamitin ang mga ito sa parehong application at database layer.

Tingnan natin ang isang simpleng halimbawa upang maunawaan kung paano gumagana ang pamamaraan sa PL / SQL

kung paano i-convert ang dobleng sa integer sa java
GUMAWA O PINAPALIT ANG PAMAMARAAN adjust_salary (in_employee_id IN EMPLOYEES.EMPLOYEE_ID% TYPE, in_percent IN NUMBER) AY NAGSIMULA - i-update ang suweldo ng empleyado UPDATE empleyado Itakda ang suweldo = suweldo + suweldo * in_percent / 100 KUNG empleyado_id = in_employee_id END

Sa halimbawa sa itaas, mayroon kaming dalawang mga parameter, inaayos ng pamamaraan ang suweldo sa pamamagitan ng isang naibigay na porsyento at ina-update ng keyword na UPDATE ang halaga sa impormasyon ng suweldo.

Pamamaraan Header

Ang seksyon bago ang keyword na IS ay tinatawag na header ng pamamaraan. Ang mga sumusunod ay ilang mga payo na dapat pamilyar sa isang tao habang nagtatrabaho sa mga pamamaraan.

  • iskema - Ito ay ang opsyonal na pangalan ng schema na kinabibilangan ng pamamaraan.

  • pangalan - Ang pangalan ng pamamaraan na kung saan ay dapat magsimula sa isang pandiwa.

  • mga parameter - Ito ang opsyonal na listahan ng mga parameter.

  • AUTHID - Tinutukoy nito kung ang pamamaraan ay papatupad sa pribilehiyo ng kasalukuyang gumagamit o ng orihinal na may-ari ng pamamaraan.

Pamamaraan ng Katawan

Ang lahat ng darating pagkatapos ng keyword na IS ay tinatawag na body ng pamamaraan. Mayroon kaming deklarasyon, pagbubukod at mga pahayag ng pagpapatupad sa pamamaraan ng katawan. Hindi tulad ng pagpapaandar, ang RETURN keyword sa isang pamamaraan ay ginagamit upang ihinto ang pagpapatupad at ibalik ang kontrol sa tumatawag.

Pagtawag sa Isang Pamamaraan

Tingnan natin kung paano tayo maaaring tumawag sa isang pamamaraan sa PL / SQL.

EXEC procedure_name (param1, param2 & hellipparamN)

Maaari naming tawagan ang mga pamamaraan na walang mga parameter sa pamamagitan lamang ng paggamit ng EXEC keyword at pangalan ng pamamaraan. Ngayong alam na natin kung paano tayo maaaring gumana sa mga pamamaraan, subukan nating unawain kung paano ginagamit ang mga pugad na bloke sa PL / SQL.

Pugad ang Block

Ang isang naka-block na bloke ay walang iba kundi ang isang kumbinasyon ng isa o higit pang mga bloke ng PL / SQL upang makakuha ng mas mahusay na kontrol sa pagpapatupad at pambihirang paghawak para sa programa.

Narito ang isang simpleng halimbawa ng isang pugad na bloke.

Itakda ang SERVEROUTPUT SA SIZE 1000000 DECLARE n_emp_id EMPLOYEES.EMPLOYEE_ID% TYPE: = & emp_id1 BEGIN DECLARE n_emp_id employees.employee_id% TYPE: = & emp_id2 v_name employees.first_name% TYPE BELINE INSTART_Mga pangalan_Mga PINTULONG_Mga pangalan_Mga PINAGKATAWAN_Mga pangalan_Mga PINAGKATAWAN_Mga pangalan ng_Mga pangalan_Mga pangalan ng_Mga pangalan_Mga sulatin_Mga pangalan_Mga pangalan_Mga pangalan ng PIN ng empleyado '|| n_emp_id ||' ay '|| v_name) EXCEPTION WHEN no_data_found THEN DBMS_OUTPUT.PUT_LINE (' Empleyado '|| n_emp_id ||' not found ') END END /

Ang panlabas na bloke ng PL / SQL sa halimbawa sa itaas ay kilala bilang parent block o nakapaloob na bloke, ang panloob na bloke, sa kabilang banda, ay kilala bilang bloke ng bata o ang nakapaloob na bloke.

Hindi magandang ideya na gamitin ang mga variable na may parehong mga pangalan sa parehong mga bloke dahil sa panahon ng pagpapatupad na ang variable ng bata ay i-override ang variable ng parent block. Nangyayari ito dahil ang PL / SQL ay nagbibigay ng unang priyoridad sa variable sa loob ng sarili nitong block.

I-block ang Label

Maaari naming mapagtagumpayan ang isyung ito sa block label na makakatulong sa amin na gumawa ng mga sanggunian sa mga variable sa loob ng mga bloke gamit ang isang label.

Narito ang isang simpleng halimbawa upang maipakita kung paano kami makakagamit ng isang block label.

 <>PAHAYAG ... MAGSIMULA ... WAKAS

Ang paggamit ng isang label ng block ay tumutulong upang mapabuti ang kakayahang mabasa ng code, makakuha ng mas mahusay na kontrol at gumawa ng mga sanggunian sa mga bloke. Ngayong alam na natin kung paano tayo makakapagtrabaho kasama ang mga naka-block na bloke, subukan nating unawain kung paano gumagana ang KUNG PAHAYAG sa PL / SQL.

KUNG Pahayag

Ang PL / SQL ay may tatlong KUNG PAHAYAG

  • KUNG TAPOS - Ito ang pinakasimpleng KUNG PAHAYAG kung totoo ang kundisyon na isasagawa ang mga pahayag, kung ang kondisyon ay mali, wala itong ginagawa.

  • KUNG SAKALI AY - Sa ito, idinagdag ang sugnay na ELSE para sa isang kahaliling pagkakasunud-sunod ng mga pahayag.

  • KUNG-THEN-ELSEIF - Pinapayagan kaming magsagawa ng maramihang mga kundisyon ng pagsubok sa isang pagkakasunud-sunod.

KUNG-TAPOS Syntax

KUNG kundisyon TAPOS pagkakasunud-sunod_ng mga pahayag na Tapusin KUNG KUNG

KUNG-THEN-ELSE Syntax

KUNG kundisyon TAPOS pagkakasunud-sunod_of_if_statements ELSE pagkakasunud-sunod_of_else_statements TAPOS KUNG

KUNG-THEN-ELSEIF Syntax

KUNG kundisyon1 TAPOS pagkakasunud-sunod_ng_pahayag1 Kundisyon ng ELSIF TAPOS pagkakasunud-sunod_ng_pahayag2 ELSE pagkakasunud-sunod_ng_pahayag3 TAPOS KUNG

Ngayon na tapos na kami sa KUNG PAHAYAG tingnan natin tingnan ang pahayag ng KASO sa PL / SQL.

Pahayag ng Kaso

Ang pahayag ng KASO ay karaniwang tumutulong sa pagpapatupad ng isang pagkakasunud-sunod ng mga pahayag batay sa isang tagapili. Ang isang tagapili, sa kasong ito, ay maaaring maging anumang, maaari itong maging isang variable, pagpapaandar o isang simpleng pagpapahayag. Narito ang isang simpleng halimbawa upang maipakita ang syntax ng pahayag ng KASO sa PL / SQL.

[<>] KASO [TUNAY | tagapili] KAPAG expression1 TAPOS pagkakasunud-sunod_ng mga pahayag1 KAPAG expression2 TAPOS pagkakasunud-sunod_ng mga pahayag2 ... KAPAG ekspresyonN TAPOS pagkakasunud-sunod_ng mga pahayagN [ELSE pagkakasunud-sunod_of_statementsN + 1] WAKAS Kaso [label_name]

Sa syntax sa itaas, pagkatapos ng keyword na CASE ay dumating ang tagapili. Suriin ng PL / SQL ang tagapili nang isang beses lamang upang matukoy kung aling pahayag ang kailangang isagawa.

Sinusundan ng tagapili ay ang WHEN keyword. Kung ang expression ay nasiyahan ang tagapili pagkatapos ang katumbas na pahayag pagkatapos THEN keyword ay napapatupad.

Ngayong alam na natin kung paano tayo makakagamit ng isang pahayag ng KASO, subukan nating unawain kung paano natin gagamitin ang mga pahayag ng loop sa PL / SQL.

Pahayag ng Loop

Ang isang loop statement sa PL / SQL ay isang paulit-ulit na pahayag na nagbibigay-daan sa iyo upang magpatupad ng isang pagkakasunud-sunod ng mga pahayag nang maraming beses. Narito ang isang simpleng halimbawa upang maipakita ang syntax ng isang loop statement sa PL / SQL.

Pagkakasunud-sunod ng LOOP_ ng mga_pahayag Tapusin ang LOOP

Dapat mayroong hindi bababa sa isang maipapatupad na pahayag sa pagitan ng keyword na LOOP at END LOOP.

Mag-loop kasama ang EXIT Statement

Ang EXIT at EXIT kapag pinapayagan ka ng mga pahayag na lumabas sa loop. EXIT WHEN statement terminates the loop conditionally habang EXIT natatapos ang pagpapatupad nang walang kondisyon.

LOOP ... EXIT WHEN condition END LOOP

Mag-loop ng Label

Ginagamit ang isang label na loop upang maging karapat-dapat ang pangalan ng variable ng loop counter kapag ginamit sa isang nakapugad na loop. Ang sumusunod ay ang syntax ng isang label na loop.

java code upang kumonekta sa MySQL
 <>LOOP pagkakasunud-sunod_of_statements Tapusin ang label ng LOOP

Ngayong alam na natin kung paano natin magagamit ang mga pahayag ng loop, tingnan natin habang ang mga pahayag ng loop para sa mas mahusay na pag-unawa.

Habang Loop Statement

Maaari naming gamitin ang WHILE loop statement kapag ang bilang ng mga pagpapatupad ay hindi natukoy hanggang sa magsimula ang pagpapatupad. Ang sumusunod na syntax ay ginagamit para sa isang WHILE loop statement sa PL / SQL.

HABANG kundisyon ang pagkakasunud-sunod ng LOOP_of_statement END LOOP

Ang kundisyon sa syntax ay isang halaga ng boolean o ekspresyon na sinusuri na maging TUNAY, MALI o NUL. Kung ang kondisyon ay TUNAY, ang mga pahayag ay papatayin, kung ito ay MALI, ang pagpapatupad ay titigil at ang kontrol ay mapupunta sa susunod na maisasabing pahayag.

Ngayong alam na natin kung paano tayo makakagamit ng isang WHILE loop statement, tingnan natin ang PARA sa loop statement.

Para sa Loop Statement

Ang isang PARAAN loop pahayag sa PL / SQL ay nagbibigay-daan sa amin upang magpatupad ng isang pagkakasunud-sunod ng mga pahayag para sa isang tiyak na bilang ng mga beses. Ang sumusunod ay ang syntax na gagamitin PARA sa loop na pahayag sa PL / SQL

PARA sa loop_counter SA [REVERSE] lower_bound .. mas mataas_bound LOOP pagkakasunud-sunod_of_statements END LOOP

Lumilikha ang PL / SQL ng isang lokal na variable na loop_counter na awtomatiko na may isang uri ng data ng INTEGER para sa loop upang hindi mo ito maipahayag nang malinaw. Ang lowerbound..higherbound ay ang saklaw kung saan umikot ang loop. Gayundin, dapat mayroon kang hindi bababa sa isang maipapatupad na pahayag sa pagitan ng mga keyword ng LOOP at END LOOP.

Ngayong alam na natin kung paano natin magagamit ang mga loop statement sa PL / SQL, tingnan natin ang pambihirang paghawak sa PL / SQL.

Natatanging Pangangasiwa

Sa PL / SQL anumang uri ng error ay itinuturing na isang pagbubukod. Ang isang pagbubukod ay maaaring tratuhin bilang isang espesyal na kundisyon na maaaring baguhin o baguhin ang daloy ng pagpapatupad. Sa PL / SQL, mayroong dalawang uri ng mga pagbubukod.

  • Pagbubukod ng System - Ito ay itinaas ng PL / SQL run-time kapag nakakita ito ng isang error.

  • Exception na Tinukoy ng Programmer - Ang mga pagbubukod na ito ay tinukoy ng programmer sa isang tukoy na application.

Pagtukoy sa Isang Exception

Ang isang pagbubukod sa PL / SQL ay dapat ideklara bago ito maiangat. Maaari nating tukuyin ang pagbubukod gamit ang EXCEPTION keyword tulad ng nagawa namin sa halimbawa sa ibaba.

EXCEPTION_NAME EXCEPTION

Upang itaas ang isang pagbubukod, gumagamit kami ng keyword na RAISE.

TAASIN ANG EXCEPTION_NAME

Kaya't iyon ay tungkol sa PL / SQL, sana ay matulungan ka ng artikulong ito sa pagdaragdag ng halaga sa iyong kaalaman. Para sa karagdagang impormasyon sa SQL o Mga Database, maaari kang mag-refer sa aming komprehensibong listahan ng pagbabasa dito: .

Kung nais mong makakuha ng isang nakabalangkas na pagsasanay sa MySQL, pagkatapos ay tingnan ang aming na kasama ng live na pagsasanay na pinamunuan ng magtuturo at karanasan sa proyekto sa totoong buhay. Tutulungan ka ng pagsasanay na ito na maunawaan ang malalim na MySQL at tutulong sa iyo na makamit ang mastery sa paksa.

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento ng ” PL / SQL Tutorial ”At babalikan kita.