首页 > 解决方案 > 如何创建存储过程以从 Oracle SQL Developer 中的表中删除项目?

问题描述

我对 sql 很陌生,我正在尝试从 BANK_PERSON 表中删除一行人员数据及其 FK 约束。我正在使用 JDBC 声明一个可调用语句,该语句接受一个用户名,然后在 sql 中调用一个存储过程并从数据库中删除一个人。我知道创建存储过程的基本过程,但我不知道如何在我的情况下这样做。这是我的 BANK_PERSON 表和带有 FK 约束的 MY BANK_ACCOUNT 表。

   CREATE TABLE BANK_PERSON (
   ID_NUMBER INTEGER PRIMARY KEY,
   FIRSTNAME VARCHAR2(30),
   LASTNAME VARCHAR2(30),
   USERNAME VARCHAR2(30),
   PASS VARCHAR2(30),
   RANK INTEGER
   );


   CREATE TABLE BANK_ACCOUNT (
   ACCOUNT_NUMBER INTEGER PRIMARY KEY,
   ACCOUNT_BALANCE NUMBER(10,2),
   FOREIGN KEY(ACCOUNT_NUMBER) REFERENCES BANK_PERSON(ID_NUMBER));

标签: javasqlstored-proceduresjdbcoracle-sqldeveloper

解决方案


首先,我建议ON DELETE CASCADE为您的 FK 使用选项,它允许您自动删除所有子条目。换句话说,使用以下脚本创建BANK_ACCOUNT表:

CREATE TABLE BANK_ACCOUNT (
   ACCOUNT_NUMBER INTEGER PRIMARY KEY,
   ACCOUNT_BALANCE NUMBER(10,2),
   FOREIGN KEY(ACCOUNT_NUMBER) REFERENCES A1(ID_NUMBER) ON DELETE CASCADE);

然后使用以下脚本创建过程:

CREATE OR REPLACE
PROCEDURE DELETE_PERSON
(USERNAME IN VARCHAR2) AS
BEGIN
  delete from BANK_PERSON where BANK_PERSON.USERNAME like DELETE_PERSON.USERNAME;
END DELETE_PERSON;

最后调用新创建的程序:

EXECUTE DELETE_PERSON('Marcus');

希望这是你想要得到的。


推荐阅读