use*_*514 1 sql oracle-sqldeveloper
我有一个简单的更新过程。因此,我希望仅更新它们不是空值的字段。我该怎么做?
PROCEDURE UpdateCustomerInfo(
CustomerID IN NUMBER,
CustomerType IN VARCHAR2,
CustomerName IN VARCHAR2,
CustomerGender IN VARCHAR2,
CustomerBirthday IN DATE)
AS
BEGIN
UPDATE CUSTOMER_INFO
SET CUSTOMER_TYPE =CustomerType,
CUSTOMER_NAME =CustomerName,
CUSTOMER_GENDER =CustomerGender,
CUSTOMER_BIRTHDAY =CustomerBirthday
WHERE CUSTOMER_ID = CustomerID;
COMMIT;
END CUSTOMER_INFO
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我吗?
谢谢
UPDATE CUSTOMER_INFO
SET CUSTOMER_TYPE = NVL(CustomerType, CUSTOMER_TYPE),
CUSTOMER_NAME = NVL(CustomerName, CUSTOMER_NAME),
CUSTOMER_GENDER = NVL(CustomerGender, CUSTOMER_GENDER),
CUSTOMER_BIRTHDAY = NVL(CustomerBirthday, CUSTOMER_BIRTHDAY)
WHERE CUSTOMER_ID = CustomerID;
Run Code Online (Sandbox Code Playgroud)
应该这样做。NVL如果第一个参数是 ,该函数将返回第二个参数NULL。因此,如果CustomerType参数为NULL,则该CUSTOMER_TYPE列将更新为已有的值。您仍在进行更新(例如生成重做),但没有更改数据。