SQL Lab: как исправить процедурную, функцию, пакет

#sql #oracle

#sql #Oracle

Вопрос:

Я пытаюсь вставить приведенный ниже код, но он ничего не запускает. Честно говоря, у меня нет большого опыта работы с SQL, поэтому я не совсем уверен, что делать. По сути, мы пытаемся создать таблицу Bowler и использовать таблицу Bowler в качестве внешнего ключа. Приведенный код предназначен для оценки каждого котелка

 CREATE TABLE Score(
Game1 int(3),
G1Score1 int(3),
G1Score2 int(3),
G1Score3 int(3),
Game1Date date(9)

Game2 int(3),
G2Score1 int(3),
G2Score2 int(3),
G2Score3 int(3),
Game2Date date(9)


Game3 int(3),
G3Score1int(3),
G3Score2 int(3),
G3Score3 int(3),
Game3Date date(9)
BowelerId
CONSTRAINT ScorePK PRIMARY KEY (Score) 
CONSTRAINT BowlerIdFK FOREIGN KEY (BowlerId) );


INSERT INTO Score
    (BowlerId, Game1, G1Score1, G1Score2, G1Score3, Game1Date, Game2, G2Score1, G2Score2, G2Score3, Game2Date, Game3, G3Score1, G3Score2, G3Score3, Game3Date)
    VALUES ( '235462', 'Game 1', '210' '114', ‘150’, ‘01-APR-2019’, ‘Game 2’, ‘230’, ‘200’, ‘160’, ‘08-APR-2019’ ‘Game 3’, ‘100’, ‘120’, ‘150’, ‘16-APR-2019’) ;

INSERT INTO Score
(BowlerId, Game1, G1Score1, G1Score2, G1Score3, Game1Date, Game2, G2Score1, G2Score2, G2Score3, Game2Date, Game3, G3Score1, G3Score2, G3Score3, Game3Date)
    VALUES ('1234576''Game 1', '109', '149', ‘114’, ‘01-APR-2019’, ‘Game 2’, ‘180’, ‘210’, ‘240’, ‘08-APR-2019’, ‘Game 3’, ‘120’, ‘206’, ‘180’, ‘16-APR-2019’)

INSERT INTO Score
(BowlerId, Game1, G1Score1, G1Score2, G1Score3, Game1Date, Game2, G2Score1, G2Score2, G2Score3, Game2Date, Game3, G3Score1, G3Score2, G3Score3, Game3Date)
    VALUES ('768403','Game 1', '230', '200’, ‘150’, ‘01-APR-2019’, ‘Game 2’, ‘270’, ‘202’, ‘276’, ‘08-APR-2019’, ‘Game 3’, ‘164’, ‘210’, ‘150’‘, ‘16-APR-2019’)

INSERT INTO Score
(BowlerId, Game1, G1Score1, G1Score2, G1Score3, Game1Date, Game2, G2Score1, G2Score2, G2Score3, Game2Date, Game3, G3Score1, G3Score2, G3Score3, Game3Date)
    VALUES ('159635', 'Game 1', '109', '150', ‘150’, ‘01-APR-2019’, ‘Game 2’, ‘260’, ‘242’, ‘220’, ‘08-APR-2019’, ‘Game 3’, ‘109’, ‘180’, ‘150’, ‘16-APR-2019’)

INSERT INTO Score
(BowlerId, Game1, G1Score1, G1Score2, G1Score3, Game1Date, Game2, G2Score1, G2Score2, G2Score3, Game2Date, Game3, G3Score1, G3Score2, G3Score3, Game3Date)
    VALUES ('457910', 'Game 1', '200', '202', ‘180’, ‘01-APR-2019’, ‘Game 2’, ‘220’, ‘230’, ‘220’, ‘08-APR-2019’, ‘Game 3’, ‘109’, ‘180’, ‘260’,  ‘16-APR-2019’)




create table Bowler(
BowlerId    char(6) not null,
FirstName   varchar2(30) not null,
LastName    varchar2(30) not null,
PhoneNum    char(12),
Email       char(20) not null,
Status      char(15),
CONSTRAINT BowlerPK PRIMARY KEY (BowlerId) );

INSERT INTO Bowler
    (BowlerId, FirstName, LastName, PhoneNum, Email, Status)
    VALUES ( '235462', 'Faizan','Khan','417-555-5555', 'fkhan698@hotmail.com', 'Active');

INSERT INTO Bowler
    (BowlerId, FirstName, LastName, PhoneNum, Email, Status)
    VALUES ('1234576', 'John','Smith','417-666-6666', 'johnsmith@gmail.com', 'Active');

INSERT INTO Bowler
    (BowlerId, FirstName, LastName, PhoneNum, Email, Status)
    VALUES ('768403', 'Jane', 'Smith', '417-777-7777', 'janesmith@gmail.com', 'Active');

INSERT INTO Bowler
    (BowlerId, FirstName, LastName, PhoneNum, Email, Status)
    VALUES ('159635', 'Harry', 'Colbert', '573-616-3145', 'truesmith@gmail.com', 'Active');

INSERT INTO Bowler
    (BowlerId, FirstName, LastName, PhoneNum, Email, Status)
    VALUES ('457910', 'Frank', 'Reynolds', '417-953-7676', 'frank666@gmail.com', 'Active');

INSERT INTO Bowler
    (BowlerId, FirstName, LastName, PhoneNum, Email, Status)
    (VALUES (‘234839’, ‘Michael’, ‘Scott’, ‘573-268-3934’, ‘gdaddy@gmail.com’, ‘Inactive’);

INSERT INTO Bowler
    (BowlerId, FirstName, LastName, PhoneNum, Email, Status)
    (VALUES (‘374837’, ‘Dwight’, ‘Schrute’, ‘418-392-3493’, ‘beets@gmail.com’, ‘Inactive’);



 

Комментарии:

1. Что конкретно означает, что он ничего не будет запускать ? Вы еще не описали проблему.

2. Мне кажется, что опубликованный вами SQL содержит ошибки. Во-первых, ограничение внешнего ключа выглядит неверно. Также я не знаком с типом данных date(9) . Существует ли такой тип данных в Oracle ? Если отправленный вами SQL является фактическим SQL, который вы пытались выполнить, тогда вы должны получать ошибки. Возможно, вы могли бы опубликовать ошибки, которые вы получаете?

Ответ №1:

Вот ваше CREATE TABLE заявление, отмеченное и исправленное как можно лучше:

 CREATE TABLE Score
 (ID_SCORE  NUMBER
    CONSTRAINT PK_SCORE
      PRIMARY KEY
      USING INDEX,

  BOWLERID  CHAR(6)
    NOT NULL
    CONSTRAINT SCORE_FK1
      REFERENCES BOWLER(BOWLERID),

  Game1     int,   -- scale or precision are not allowed on the INT data type
  G1Score1  int,
  G1Score2  int,
  G1Score3  int,
  Game1Date date,  -- scale or precision are not allowed on the DATE data type

  Game2     int,
  G2Score1  int,
  G2Score2  int,
  G2Score3  int,
  Game2Date date,

  Game3     int,
  G3Score1  int,
  G3Score2  int,
  G3Score3  int,
  Game3Date date);
 

Ваши INSERT инструкции завершатся ошибкой, потому что вы пытаетесь сохранить строки (например 'Game 1' ) в столбцах, определенных как INT , что означает, что вы можете хранить в них только числа. Но как только вы создадите свою таблицу, вы можете продолжить оттуда.

Удачи.

Редактировать

Я вижу, что есть таблица BOWLER с BOWLERID в качестве первичного ключа. Я не заметил этого раньше. В этом случае кажется, что вы хотели иметь столбец BOWLER_ID в SCORE в качестве внешнего ключа для BOWLER. Я также добавил столбец SCORE_ID для ОЦЕНКИ в качестве первичного ключа.

Удачи.

Комментарии:

1. Здравствуйте. Итак, я смог создать Score таблицу, но у меня все еще возникают проблемы с INSERT операторами. Как мне внедрить BowlerId в Score таблицу, как я пытался сделать в своих первых статусах ВСТАВКИ, потому что должен быть способ определить оценку каждого человека.