我正在为我的jsp页面编写一个删除函数,我遇到了一些麻烦,因为我希望用户只能从表中删除某些列,但保留其他列。我的jsp页面有4个表,用户可以从其中任何一个表中删除(注意“if语句”)....我知道我这里有什么不对,但这是我的尝试。任何帮助都表示赞赏,如果在servlet中处理其中的一些更好,请告诉我。
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;
答案 0 :(得分:2)
您正在混合使用DML和DDL的概念。 DDL(例如ALTER TABLE)用于系统更改和维护,通常由DBA完成; 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;