Sql 通过匹配两个属性删除查询
这是一个通过与两个属性值匹配来删除的过程,但它通过仅与R_ID匹配来删除值。在这里,与之后的值匹配不起作用。如何解决此问题???检查此操作是否有效:Sql 通过匹配两个属性删除查询,sql,oracle,procedure,Sql,Oracle,Procedure,这是一个通过与两个属性值匹配来删除的过程,但它通过仅与R_ID匹配来删除值。在这里,与之后的值匹配不起作用。如何解决此问题???检查此操作是否有效: CREATE OR REPLACE PROCEDURE deleteProcFood(id IN food_item.R_ID%TYPE, item_name IN food_item.ITEM_NAME%TYPE)IS BEGIN DELETE FROM food_item WHERE food_item.R_ID = id AND foo
CREATE OR REPLACE
PROCEDURE deleteProcFood(id IN food_item.R_ID%TYPE,
item_name IN food_item.ITEM_NAME%TYPE)IS
BEGIN
DELETE FROM food_item
WHERE food_item.R_ID = id AND
food_item.ITEM_NAME = item_name;
COMMIT;
END;
/
我怀疑
ITEM\u NAME=ITEM\u NAME
是否总是返回true。因此,尝试更改参数变量名称。最好始终使用别名,例如:
CREATE OR REPLACE
PROCEDURE deleteProcFood(PIN_ID IN food_item.R_ID%TYPE,
PIN_item_name IN food_item.ITEM_NAME%TYPE)IS
BEGIN
DELETE FROM food_item
WHERE food_item.R_ID = PIN_ID AND
food_item.ITEM_NAME = PIN_item_name;
COMMIT;
END;
/
是因为项目名称与项目名称相同吗?可以尝试将项目名称更改为PIN\u item\u name(项目名称中的过程)@posssesdhamid,然后您应该接受答案。@posssesdhamid:请勾选此答案旁边的灰色勾选框作为答案接受。
CREATE OR REPLACE
PROCEDURE deleteProcFood(id IN food_item.R_ID%TYPE,
item_name IN food_item.ITEM_NAME%TYPE)IS
BEGIN
DELETE FROM food_item
WHERE food_item.R_ID = deleteProcFood.id AND
food_item.ITEM_NAME = deleteProcFood.item_name;
COMMIT;
END;
/