Oracle SQL - 仅更新过程非空值
Oracle SQL - Update procedure only non null values
我有一个简单的更新程序。因此,我希望更新 仅 字段,它们不是 空值 。我该怎么做?
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
谁能帮帮我?
谢谢
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;
应该这样做。如果第一个参数是 NULL
,NVL
函数将 return 第二个参数。因此,如果 CustomerType
参数是 NULL
,CUSTOMER_TYPE
列将更新为具有它已有的值。您仍在执行更新(例如生成重做)但您没有更改数据。
我有一个简单的更新程序。因此,我希望更新 仅 字段,它们不是 空值 。我该怎么做?
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
谁能帮帮我?
谢谢
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;
应该这样做。如果第一个参数是 NULL
,NVL
函数将 return 第二个参数。因此,如果 CustomerType
参数是 NULL
,CUSTOMER_TYPE
列将更新为具有它已有的值。您仍在执行更新(例如生成重做)但您没有更改数据。