PL/SQL 删除特定行的过程
PL/SQL Procedure to Delete Specific Rows
正在尝试创建一个存储过程来删除分销商 (x) 提供的所有商品以及我的 LINE
table 中对商品的引用。我的问题是总共有 3 个 table。所以我需要先删除 LINE
table 中的引用,然后再删除 GOODS
table 中的项目,但我似乎无法正确理解。我觉得我有它只是需要一些语法错误的帮助。
CREATE OR REPLACE PROCEDURE PRC_DeleteProd(x IN INTEGER)
AS
v_dcode distributor.d_code%type;
v_gcode goods.g_code%type;
v_gcode2 line.g_code%type;
CURSOR v_delete_cursor IS
SELECT goods.g_code, line.g_code , d_code
FROM distributor
JOIN goods ON (distributor.d_code = goods.g_code)
JOIN line ON (goods.g_code = line.g_code);
BEGIN
OPEN v_delete_cursor;
LOOP
FETCH v_delete_cursor INTO v_dcode, v_gcode, v_gcode2;
EXIT WHEN v_cus_cursor%NOTFOUND;
IF x = v_dcode THEN
DELETE FROM line WHERE v_gcode2 = x;
DELETE FROM goods WHERE v_gcode = x;
END IF;
END LOOP;
END;
/
您没有正确使用AND
关键字
DELETE FROM line
WHERE v_gcode = x
AND
DELETE FROM goods
WHERE v_gcode = x;
应该是
DELETE FROM line
WHERE v_gcode = x;
DELETE FROM goods
WHERE v_gcode = x;
正在尝试创建一个存储过程来删除分销商 (x) 提供的所有商品以及我的 LINE
table 中对商品的引用。我的问题是总共有 3 个 table。所以我需要先删除 LINE
table 中的引用,然后再删除 GOODS
table 中的项目,但我似乎无法正确理解。我觉得我有它只是需要一些语法错误的帮助。
CREATE OR REPLACE PROCEDURE PRC_DeleteProd(x IN INTEGER)
AS
v_dcode distributor.d_code%type;
v_gcode goods.g_code%type;
v_gcode2 line.g_code%type;
CURSOR v_delete_cursor IS
SELECT goods.g_code, line.g_code , d_code
FROM distributor
JOIN goods ON (distributor.d_code = goods.g_code)
JOIN line ON (goods.g_code = line.g_code);
BEGIN
OPEN v_delete_cursor;
LOOP
FETCH v_delete_cursor INTO v_dcode, v_gcode, v_gcode2;
EXIT WHEN v_cus_cursor%NOTFOUND;
IF x = v_dcode THEN
DELETE FROM line WHERE v_gcode2 = x;
DELETE FROM goods WHERE v_gcode = x;
END IF;
END LOOP;
END;
/
您没有正确使用AND
关键字
DELETE FROM line
WHERE v_gcode = x
AND
DELETE FROM goods
WHERE v_gcode = x;
应该是
DELETE FROM line
WHERE v_gcode = x;
DELETE FROM goods
WHERE v_gcode = x;