首页 > 解决方案 > Oracle 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)

名字、姓氏、地址、手机、订单号

四个参数:First Name、Last Name、Address、Mobile 可以为 NULL 也不能为 NULL

如果它们不为空,我需要使用参数中不为空的任何内容来更新表

我怎么做?

例如:

First Name: Robert
Last Name: NULL
Mobile: NULL
Add1 : First Street, 20A

基于此,我只需要更新表 Ord_Address 中的 First Name 和 Add1

标签: oracleplsqlnullsql-update

解决方案


Ummmm ...不,您没有功能。那应该是一个过程,因为函数不能执行 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;

推荐阅读