Помогите с функцией удаления и удаления столбцов - PullRequest
0 голосов
/ 09 мая 2011

Я пишу функцию удаления для своей страницы jsp, и у меня возникают некоторые проблемы, потому что я хочу, чтобы пользователь мог удалять только определенные столбцы из таблицы, но оставлял другие столбцы. Моя страница JSP имеет 4 таблицы, и пользователь может удалить из любой из них (обратите внимание на «если утверждения») .... Я знаю, что у меня здесь неправильно, но это моя попытка. Любая помощь приветствуется, также, если было бы лучше справиться с этим в сервлете, пожалуйста, дайте мне знать.

BEGIN

-- If a deletion is checked on the Lost/Found table.

  IF pLfEdit IS NOT NULL
THEN

  ALTER TABLE   BSSS
    DROP COLUMN LOST_FOUND
    DROP COLUMN LOST_LOC
  WHERE   EDIT_ID = pLfEditDel;
ELSE
  RAISE NO_DATA_FOUND;
END IF;

-- If a deletion is checked on the Returned Check table.
  IF pRcEdit IS NOT NULL
THEN

  ALTER TABLE   BSSS
    DROP COLUMN RETURN_CHECK
    DROP COLUMN RETURN_LOC
  WHERE   EDIT_ID = pRcEditDel;
ELSE
  RAISE NO_DATA_FOUND;
END IF;

-- If a deletion is checked on the Sponsor table.
  IF pSpnEdit IS NOT NULL
THEN

  ALTER TABLE   BSSS
      DROP COLUMN SPONSOR
      DROP COLUMN SPON_LOC
  WHERE   EDIT_ID = pSpnEditDel;
ELSE
  RAISE NO_DATA_FOUND;
END IF;

-- If a deletion is checked on the Comments table.
  IF pComEdit IS NOT NULL
THEN

  ALTER TABLE   BSSS
      DROP COLUMN COMMENTS
  WHERE   EDIT_ID = pComEditDel;
  ELSE
  RAISE NO_DATA_FOUND;
  END IF;

COMMIT;
RETURN 0;
EXCEPTION
WHEN OTHERS
THEN
  ROLLBACK;
  RETURN SQLCODE;
END DEL_BS_INFO;

1 Ответ

2 голосов
/ 10 мая 2011

Вы смешиваете понятия DML и DDL.DDL (например, ALTER TABLE) предназначен для изменения и обслуживания системы, как правило, выполняется администратором базы данных;DML (например, SELECT, INSERT, DELETE, COMMIT) предназначен для транзакций, выполняемых приложением.

Я думаю, что вы не хотите удалять столбцы из таблицы, но хотите удалить значения изотдельные столбцы в несколько строк.Я думаю, что вы хотите установить их в NULL.Например:

IF pLfEdit IS NOT NULL
THEN
   UPDATE BSSS
   SET LOST_FOUND = NULL,
       LOST_LOC = NULL
   WHERE   EDIT_ID = pLfEditDel;
ELSE
   RAISE NO_DATA_FOUND;
END IF;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...