Hvordan bygge en dynamisk spørring i Oracle

Oracle, objektrelasjonsdatabase management program levert av Oracle Corporation, kan du bruke SQL-setninger til å lagre, administrere og vise data. Spørringer tillate brukeren å kommunisere med databasen for å utføre SQL-kommandoer. En dynamisk SQL-spørring tilbyr et bredere spekter av evner enn en standard spørring. Du kan bruke dynamiske spørringer for å kjøre SQL-kommandoer under kjøring, for eksempel når de opererer med et bord som du ikke vil vite navnet på inntil da.

Bruksanvisning

1 Åpne Oracle og klikk på ikonet for å åpne SQL Workshop verktøyet.

2 Skriv i SQL-setninger for å opprette objekter og typer bord. Du kan bruke disse som en slags mal for andre tabeller i databasen. Kraften bak dynamiske SQL-setninger er at du kan lage bordet og spørre det under kjøring.

"CREATE TYPE t_students AS OBJEKT (studentId NUMMER, FULL_NAME VARCHAR2 (30))

/

CREATE TYPE t_studentlist AS TABLE av t_student

/ "

I de ovennevnte uttalelser, opprettet du en database som heter "t_students" som vil bruke "studentId» og «FULL_NAME" verdier som unike identifikatorer (en måte å identifisere en enkelt post i en database). Den "studentId" verdi vil være et "NUMBER" variable, noe som betyr at kun tall vil spare til "studentId" -feltet. Den "FULL_NAME" verdien kan bare holde opp til 30 brev tegn. Til slutt ble et bord type ( "t_studentlist") laget på innsiden av "t_student" database. Endre disse verdiene til bedre representerer den type data du har i Oracle database.

3 Skriv SQL-setninger for å lage selve tabeller i databasen. Tabellen låner strukturen av typene du opprettet i trinn 2, så du trenger ikke å angi identifikatorer igjen. Bruke samme eksempel, vil SQL til å opprette tabellene ser slik ut:

"CREATE TABLE students_new (studentId NUMMER, studenter t__studentlist)

NESTED TABLE students STORE AS student_table;"

Den "students_new" table vil koble til "studenter" bord og "t_studentlist" ved å bruke "studentId" -feltet. Hver student i tabellen vil ha et unikt nummer som knytter studentens informasjon i hver tabell. På denne måten vil du ikke ha repeterende data i tabellene. For eksempel, i en student database, har du en tabell som holder studenten kontaktinformasjon (navn, telefonnummer og postadresse) og en annen tabell som inneholder studentens gjeldende plan. Den eneste felt som vil være det samme i begge tabeller er "studentId" felt som forbinder informasjonen. Du kan bruke "studentId" -feltet for å skrive en spørring som trekker studentens navn og telefonnummer fra studenten kontaktinformasjon og studentens arbeidstid informasjon fra planen tabellen.

4 Skriv en SQL-spørring for å legge til informasjon i tabellene. Erklære to variabler som vil trekke denne informasjonen fra bordet som skal anvendes i den dynamiske spørringen senere.

"INSERT INTO students_new VERDIER (

10,

t_studentlist (

t_students (1, 'John Doe "),

t_students (2, 'Jane Smith')));

ERKLÆRE

majorId NUMBER;

sname VARCHAR1 (20); "

To studenter ble lagt til i tabellen. John Doe har en student ID "1" og Jane Smith har en student ID "2." All gjennom databasen John Doe informasjons vil ha en ID fra "1"

5 Utføre spørringen. Denne delen vil legge den dynamiske SQL. En av tabeller navn er ikke kjent på det tidspunktet du koden spørringen, men den vil bli tilgjengelig i løpet av kjøring. Opprett en midlertidig plassholder i stedet.

"BEGYNNE

EXECUTE IMMEDIATE 'SELECT s.studentId, s.fullname

Fra students_new s, bord (s.students) s

HVOR s.studentId = 1 '

INTO majorId, sname;

SLUTT;

/ "

I den dynamiske spørringen, tar du informasjon fra "students_new" bordet og la ballen inn i "majorId" og "SNAME" felt i en tabell som ikke er kjent på dette tidspunkt ((s.students) e). Du spurte database for informasjon om en student med en ID fra "1" Bruke eksempel er John Doe studenten valgt fra studentenes bordet og lagt til det ukjente tabellen.

6 Trykk på "F9" -tasten på tastaturet for å kjøre spørringen og teste den.

Hint

  • Separate SQL-setninger enn flere forskjellige linjer for å gjøre koden lett å lese og referanse senere.
  • SQL-setninger er store og små bokstaver.