Oracle PLSQL - 基于非空的更新
Oracle PLSQL - Update based on non-null
我有一个 PLSQL 过程接收
FUNCTION VALIDATE_UPDATE_REQUEST (P_Orderno In Ord_Head.Order_No%Type,
P_First_Name In Ord_Address.First_Name%Type,
P_Last_Name In Ord_Address.Last_Name%Type,
P_Address In Ord_Address.Add_1%Type,
P_Mobile In Ord_Address.Phone_No%Type)
名字、姓氏、地址、手机、订单号
四个参数:名字、姓氏、地址、手机
可以为 NULL 或不能为 NULL
如果它们不是 NULL,我需要用参数
中不为空的任何内容更新 table
我该怎么做?
例如:
First Name: Robert
Last Name: NULL
Mobile: NULL
Add1 : First Street, 20A
基于此,我只需要更新 table Ord_Address
中的 First Name 和 Add1
嗯...不,你没有功能。那应该是一个 过程,因为函数不能进行 DML 操作。
除此之外,程序会是这样的:
update your_table set
first_name = nvl(p_first_name, first_name),
last_name = nvl(p_last_name, last_name),
address = nvl(p_address, address),
mobile = nvl(p_mobile, mobile)
where orderno = p_orderno;
我有一个 PLSQL 过程接收
FUNCTION VALIDATE_UPDATE_REQUEST (P_Orderno In Ord_Head.Order_No%Type,
P_First_Name In Ord_Address.First_Name%Type,
P_Last_Name In Ord_Address.Last_Name%Type,
P_Address In Ord_Address.Add_1%Type,
P_Mobile In Ord_Address.Phone_No%Type)
名字、姓氏、地址、手机、订单号
四个参数:名字、姓氏、地址、手机 可以为 NULL 或不能为 NULL
如果它们不是 NULL,我需要用参数
中不为空的任何内容更新 table我该怎么做?
例如:
First Name: Robert
Last Name: NULL
Mobile: NULL
Add1 : First Street, 20A
基于此,我只需要更新 table Ord_Address
中的 First Name 和 Add1嗯...不,你没有功能。那应该是一个 过程,因为函数不能进行 DML 操作。
除此之外,程序会是这样的:
update your_table set
first_name = nvl(p_first_name, first_name),
last_name = nvl(p_last_name, last_name),
address = nvl(p_address, address),
mobile = nvl(p_mobile, mobile)
where orderno = p_orderno;