sql >> Databasteknik >  >> RDS >> Oracle

ALTER &DROP Table DDL med Execute Immediate i Oracle Database

ÄNDRING &SLÄPP tabell DDL

Från och med nu har vi lärt oss alla möjliga sätt att skapa en tabell direkt inuti ett PL/SQL-block med hjälp av Native Dynamic SQL. Du kan kontrollera dem i de två sista handledningarna som är handledning 82 och handledning 83.

Tack, Dynamic SQL för att du ger oss kraften att köra DDL- och DML-satser i vårt PL/SQL-block. Ok, lugna ner er alla stenåldersmänniskor! Jag vet att DBMS_SQL-paketet fortfarande finns där men i jämförelse med dynamisk SQL tycker jag att det är riktigt komplicerat, för att inte tala om dess tröga prestanda. Hur som helst, så

Vad lär vi oss av den här handledningen?

I den här handledningen kommer vi att lära oss hur man använder ALTER &DROP-tabellen DDL med Execute Immediate-satsen för Native dynamic SQL. Det betyder att i slutet av denna handledning kommer du att kunna dynamiskt modifiera och ta bort ett databasobjekt såsom en tabell rakt igenom ditt PL/SQL-program.

Varför ska vi lära oss det?

Vissa kanske tycker att ämnet är irrelevant, men det är inte snarare att det är ett mycket viktigt ämne, särskilt ur Oracle-certifierings- och intervjuperspektiv. Som utvecklare måste vi alla ha våra grunder klara eftersom du aldrig vet när du behöver det.

Så låt oss börja handledningen, om du fortfarande har frågor skicka gärna ett meddelande till dem på min Facebook här. Låt oss först lära oss hur man ändrar en tabell med ALTER TABLE med Execute Immediate of Dynamic SQL.

Hur ändrar man en tabell dynamiskt?

För att modifiera ett databasobjekt som en tabell använder vi ALTER DDL i Oracle Database. Att ändra en tabell med ALTER DDL genom SQL är enkelt jämfört med PL/SQL.

PL/SQL stöder inte DDL-, DML- och DQL-satser direkt. För att exekvera nämnda SQL-satser behöver vi antingen använda Dynamic SQL eller DBMS_SQL-paket. Bland dessa två är Native Dynamic SQL (NDS) det mest lönsamma alternativet på grund av dess enkelhet och optimerade prestanda. Du kan läsa fördelarna med NDS framför DBMS_SQL-paketet här.

Så det enklaste sättet att dynamiskt modifiera ett databasobjekt som en tabell är att använda Alter Table DDL med Execute Immediate-satsen för Native Dynamic SQL.

Exempel:Ändra tabell DDL med Execute Immediate-satsen.

För demonstrationen kommer vi att använda samma tabell som vi skapade i den senaste handledningen. Där skapade vi en tabell med namnet tut_83 som hade två kolumner tut_num med NUMBER datatyp och tut_name av datatypen varchar 2.

Om du övar med mig måste du ha den tabellen skapad i ditt schema. Om det är så är du redo att gå annars besök den senaste handledningen och skapa den tabellen.

Låt oss nu säga att vi vill lägga till en annan kolumn tut_date of date datatype till den här tabellen och det också med hjälp av inbyggd dynamisk SQL. För att göra det måste vi använda ALTER TABLE DDL med Execute Immediate-satsen.

Steg 1:Förbered DDL-satsen.

Den bästa praxisen för att skriva ett dynamiskt SQL-program är att förbereda din SQL-sats i förväg.

ALTER TABLE tut_83 ADD tut_date DATE

Här är ALTER TABLE DDL som vi kommer att använda för dynamisk exekvering. Denna sats lägger till kolumnen tut_date av datatypen DATE till tabellen tut_83.

Du kan också titta på videohandledningen för att demonstrera konceptet live.

Steg 2:Skriv programmet Native Dynamic SQL.

När du har din DDL-sats redo är du redo att skriva PL/SQL-blocket.

SET SERVEROUTPUT ON;
DECLARE
 ddl_qry VARCHAR2(50);
BEGIN
 ddl_qry := 'ALTER TABLE tut_83
        	 ADD  tut_date DATE';
 EXECUTE IMMEDIATE ddl_qry;
END;
/  

Vid framgångsrik exekvering kommer detta PL/SQL-program att modifiera ovan nämnda tabell. Du kan kontrollera den ändrade strukturen för din tabell genom att använda kommandot DESCRIBE, så här

DESCRIBE tut_83;

ELLER

DESC tut_83;

Det är allt du behöver göra. Det är så vi modifierar ett databasobjekt dynamiskt med ALTER TABLE DDL med Execute Immediate-satsen. Det avslutar också den första delen av handledningen, låt oss nu gå vidare till den andra och lära oss hur man tar bort en tabell med inbyggd dynamisk SQL.

Hur tar man bort en tabell dynamiskt?

För att ta bort ett databasobjekt som en tabell använder vi DROP DDL i Oracle Database. Liksom alla andra DDL-satser stöds inte heller denna direkt av PL/SQL-motorn. Och som vanligt måste vi använda Dynamic SQL för att köra denna DDL också. Låt oss se hur man tar bort en tabell med Execute Immediate of Native Dynamic SQL.

Steg 1:Förbered DDL-satsen.

DDL för att radera en tabell är:

DROP TABLE tut_83

Denna DDL kommer att ta bort tabellen tut_83 från schemat.

Steg 2:Skriv PL/SQL-programmet för DROP-tabellen med Execute Immediate.

SET SERVEROUTPUT ON;
DECLARE
    ddl_qry     VARCHAR2 (100);
BEGIN
    ddl_qry := 'DROP TABLE tut_83';
    EXECUTE IMMEDIATE ddl_qry;
END;
/

Så framgångsrik exekvering av detta program bör släppa tabellen tut_83 som du enkelt kan kontrollera genom att använda kommandot DESCRIBE som visas ovan.

Det är handledningen om hur man ändrar och tar bort ett databasobjekt med hjälp av Alter &Drop-tabellen DDL med Execute Immediate-satsen för Native Dynamic SQL i Oracle Database. Hoppas du tyckte om att läsa den och lärde dig något nytt. Dela gärna den här bloggen på dina sociala medier med dina vänner. Du kan också kontakta mig på min Facebook-sida för fler intressanta insikter. Tack och ha en bra dag!


  1. Det totala antalet lås överstiger låsbordets storlek

  2. Topp 5 gratis verktyg för databasdesign

  3. SQL INSERT för nybörjare

  4. Hur man får information om kompileringsfel i Oracle/TOAD