Oracle tillåter objektorienterad relationsdatabas management program som tillhandahålls av Oracle Corporation , du använda SQL-satser för att lagra , hantera , hämta och visa data . Frågor tillåter användaren att kommunicera med databasen för att köra SQL- kommandon . En dynamisk SQL erbjuder ett bredare utbud av funktioner än en vanlig fråga . Du kan använda dynamiska frågor för att köra SQL- kommandon under körning , t.ex. när man arbetar med en tabell som du inte vet namnet på tills dess . Instruktioner
1
Open Oracle och klicka på ikonen för att öppna SQL Verkstad verktyget .
2
Skriv in de SQL-satser för att skapa objekt och typer bord . Du kan använda dessa som ett slags mall för andra tabeller i databasen . Kraften bakom dynamiska SQL-satser är att du kan skapa tabellen och fråga den under körning .
" Skapa text t_students som objekt ( ElevID NUMMER , FULL_NAME VARCHAR2 ( 30 ) ) katalog
/
SKAPA TYPE t_studentlist som tabell av t_student
/"
ovanstående påståenden , skapade du en databas som heter " t_students " som kommer att använda " ElevID " och " FULL_NAME " värden som unika identifierare ( ett sätt att identifiera en enskild post i en databas ) . Den " ElevID " värdet kommer att vara en " NUMBER " variabel , vilket innebär att endast siffror kommer att spara på " ElevID " fältet . Den " FULL_NAME " värde kan bara hålla upp till 30 tecken än bokstäver . Slutligen , ( " t_studentlist " ) en tabell typ skapades inuti " t_student " databas . Ändra dessa värden för att bättre representera den typ av data du har i din Oracle-databas . Addera 3
Skriv de SQL-satser för att skapa själva tabellerna i databasen . Tabellen lånar strukturen av de typer som du skapade i steg 2 , så du behöver inte ange identifierare igen . Med samma exempel , kommer SQL för att skapa de tabeller ser ut så här :
" CREATE TABLE students_new ( ElevID NUMMER , studenter t__studentlist ) katalog
kapslad tabell studenter STORE AS student_table ; "
" students_new " tabellen kommer att ansluta till " elever " bord och " t_studentlist " genom att använda " ElevID " fältet . Varje elev i tabellen kommer att ha ett unikt nummer som ansluter studentens uppgifter i varje tabell . På så sätt kommer du inte repetitiva uppgifter i tabellerna . Till exempel , i en student -databas , har du en tabell som innehåller den information eleven kontakta ( namn , telefonnummer och e-postadress) och en annan tabell som håller studentens nuvarande schema . Den enda fält som kommer att vara densamma i båda tabellerna är " ElevID "-fältet som ansluter informationen. Du kan använda " ElevID " fältet för att skriva en fråga som drar studentens namn och telefonnummer från studenten kontaktuppgifter och elevens schema information från schemat tabellen .
4
Skriv en SQL-fråga till lägga till information till dina tabeller . Deklarera två variabler som kommer att dra denna information från tabellen som skall användas i den dynamiska frågan senare.
" INSERT INTO students_new VÄRDEN (
10 ,
t_studentlist (
t_students ( 1 , " John Doe " ) , Porr
t_students ( 2 , " Jane Smith ' ) ) ) ;
FÖRKLARA
majorId NUMMER ;
sname VARCHAR1 ( 20 ) , "
Två studenter har lagts till i tabellen . John Doe har en student-ID på " 1 " och Jane Smith har en student -ID " 2 . " Allt genom databasen John Doe information kommer att ha ett ID av " 1 . "
5
exekvera frågan . Denna del kommer att lägga den dynamiska SQL . Ett av borden namn är inte känt vid den tidpunkt du koda frågan , men det kommer att bli tillgängliga under körning . Skapa en temporär platshållare istället .
" BEGIN
UTFÖR DIREKT " SELECT s.studentId , s.fullname
FRÅN students_new s , tabell ( s.students ) s
DÄR s.studentId = 1 '
INTO majorId , sname ,
END ,
/"
i den dynamiska fråga , du tar information från " students_new " bordet och sätta den i " majorId " och " sname " fält i en tabell som inte är kända vid denna tidpunkt ( ( s.students ) s ) . Du efterfrågade databasen efter information om en elev med ett ID för " 1 . " Med hjälp av exempel är John Doe studenten vald från elevernas bord och läggas till den okända tabellen .
6
Tryck på " F9 " på tangentbordet för att köra frågan och testa den .
Addera ditt