1

TABLE を作成するスクリプトを作成していますが、最後のコマンドに問題があります。

SELECT Studenci.Nazwisko,
   Trunc(Months_Between(Sysdate,Studenci.RokUrodzenia)/12) Wiek FROM
   Studenci.RokUrodzenia to_date('1980','YYYY')

これは私のスクリプトです。私は何を間違っていますか?

    CREATE TABLE Studenci(
       NrIndeksu NUMBER(3) PRIMARY KEY,
       Nazwisko VARCHAR2(16),
       RokUrodzenia NUMBER(4),
       Kierunek VARCHAR2(12)
    );

    CREATE TABLE Wykladowcy(
       IdWykladowcy NUMBER(4) PRIMARY KEY,
       Nazwisko VARCHAR2(16),
       Stopien VARCHAR2(6),
       Stanowisko VARCHAR(8)
    );

    CREATE TABLE Kursy(
       IdKursu NUMBER(1) PRIMARY KEY,
       Nazwa VARCHAR2(18),
       IdWykladowcy NUMBER(4) REFERENCES Wykladowcy
    );

    CREATE TABLE Rejstracje(
       NrIndeksu NUMBER(3) REFERENCES Studenci , 
       IdKursu NUMBER(1)  REFERENCES Kursy ,
       Data DATE
    );


    CREATE UNIQUE INDEX Ind_Kursy_naz ON Kursy(Nazwa);
    CREATE INDEX Ind_Studenci_naz ON Studenci(Nazwisko);
    CREATE INDEX Ind_Wykladowcy_naz ON Wykladowcy(Nazwisko);

    INSERT INTO Wykladowcy VALUES (1010,'Kowalski Jan', 'Dr', 'Adiunkt');
    INSERT INTO Wykladowcy VALUES (1011,'Jakubowski Emil','Dr hab','Docent');
    INSERT INTO Wykladowcy VALUES (1012,'Gazda Mirosław','Dr','Profesor');

    INSERT INTO Kursy VALUES (1,'Bazy danych',1010);
    INSERT INTO Kursy VALUES (2,'Systemy operacyjne',1012);
    INSERT INTO Kursy VALUES (3,'Multimedia',1011);
    INSERT INTO Kursy VALUES (4,'Sieci komputerowe',null);

    INSERT INTO Studenci VALUES (101,'Kuczyńska Ewa',1980,'Bazy danych');
    INSERT INTO Studenci VALUES (102,'Lubicz Robert',1985,'Multimedia');
    INSERT INTO Studenci VALUES (103,'Krajewski Bogdan',1988,'Bazy danych');
    INSERT INTO Studenci VALUES (104,'Lityńska Anna',1987,'Multimedia');
    INSERT INTO Studenci VALUES (105,'Marzec Marcin',1982,'Multimedia');
    INSERT INTO Studenci VALUES (106,'Cichaocki Rafał',1989,'Bazy danych');

    INSERT INTO Rejstracje VALUES (101,1,NULL);
    INSERT INTO Rejstracje VALUES (102,3,NULL);
    INSERT INTO Rejstracje VALUES (104,3,NULL);
    INSERT INTO Rejstracje VALUES (106,1,NULL);
    INSERT INTO Rejstracje VALUES (104,2,NULL);
    INSERT INTO Rejstracje VALUES (101,4,NULL);
    INSERT INTO Rejstracje VALUES (103,1,NULL);
    INSERT INTO Rejstracje VALUES (103,1,NULL);
    INSERT INTO Rejstracje VALUES (105,1,NULL);


    UPDATE Rejstracje SET Rejstracje.IdKursu=Rejstracje.IdKursu*3
    WHERE Rejstracje.NrIndeksu=105;
    COMMIT UPDATE

    INSERT INTO Rejstracje(Data)
    VALUES (Sysdate);

    SELECT *FROM Kursy
    WHERE Kursy.IdWykladowcy IS NULL;

    SELECT *FROM Rejstracje
    WHERE Rejstracje.NrIndeksu=101;

    SELECT Kursy.Nazwa 
    FROM Kursy
    ORDER BY Nazwa ASC;

    SELECT Studenci.Nazwisko,
    Trunc(Months_Between(Sysdate,Studenci.RokUrodzenia)/12) Wiek
    FROM Studenci.RokUrodzenia to_date('1980','YYYY')
4

2 に答える 2

0

エラーメッセージから、行方不明のよう;です。

于 2012-10-19T20:54:26.290 に答える
0

この SQL:

SELECT Studenci.Nazwisko,
       Trunc(Months_Between(Sysdate,Studenci.RokUrodzenia)/12) Wiek
  FROM Studenci.RokUrodzenia to_date('1980','YYYY');

to_date()呼び出しがそのように行くことができないため、無効です。

あなたはおそらく次のようなものを探しています:

SELECT Studenci.Nazwisko,
       Trunc(Months_Between(Sysdate,Studenci.RokUrodzenia)/12) Wiek
  FROM Studenci
 WHERE RokUrodzenia = 1980;

これRokUrodenziaは NUMBER(4) 列であり、DATE 列ではありません。RokUrodenzia は DATE ではなく (私が言ったように)、MONTHS_BETWEEN はおそらく日付を想定しているため、MONTHS_BETWEEN() 呼び出しを機能させるにはまだいくつかの作業が必要になる場合があります。それを修正する方法を調査する必要があります。TO_DATE() を合法的に使用することができます。

于 2012-10-19T20:55:55.323 に答える