Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 合并使用nvl()将数据库中的现有值替换为null_Sql_Oracle_Plsql_Oracle11g_Null - Fatal编程技术网

Sql 合并使用nvl()将数据库中的现有值替换为null

Sql 合并使用nvl()将数据库中的现有值替换为null,sql,oracle,plsql,oracle11g,null,Sql,Oracle,Plsql,Oracle11g,Null,下面的存储过程工作正常,但合并会使用nvl()将数据库中的现有值替换为null 您可以使用“默认值”指定默认值,如果未提供参数,将指定该值: create or replace PROCEDURE P_UPSERT_CONNECTDISCONNECT ( I_SAP_UUID IN VARCHAR2 DEFAULT NULL , I_METER_ID IN VARCHAR2 DEFAULT NULL , I_STATUS IN VARCHAR2 DEFAULT NULL , I_CUR_

下面的存储过程工作正常,但合并会使用nvl()将数据库中的现有值替换为null


您可以使用“默认值”指定默认值,如果未提供参数,将指定该值:

create or replace PROCEDURE P_UPSERT_CONNECTDISCONNECT
(
  I_SAP_UUID IN VARCHAR2 DEFAULT NULL
, I_METER_ID IN VARCHAR2 DEFAULT NULL
, I_STATUS IN VARCHAR2   DEFAULT NULL
, I_CUR_SYSTEM IN VARCHAR2 DEFAULT NULL
....
另一种方法是创建重载过程(具有相同名称和不同参数的过程):


如果它们是可选的,则将它们声明为

create or replace PROCEDURE P_UPSERT_CONNECTDISCONNECT
(
  I_SAP_UUID IN VARCHAR2 DEFAULT NULL
, I_METER_ID IN VARCHAR2 DEFAULT NULL
然而,在程序中,当它们没有任何价值时,你必须决定怎么做

您的代码可以从

UPDATE SET 
SAP_UUID = Case When (I_SAP_UUID is not null and I_SAP_UUID <> '') Then I_SAP_UUID Else e.SAP_UUID End,

另外,在Oracle中,null等于空字符串,您不必检查两次,例如

I_SAP_UUID is not null and I_SAP_UUID <> ''

nvl(I_REQ_CREATION_TIME,s.REQ_CREATION_TIME),REQ_CREATION_TIME有一个日期值,但正在更新为NULL。。有什么线索吗?我应该为NVL的日期字段做些什么吗?没有,就NVL而言,日期数据类型没有什么特别的。如果可能,通过编辑您发布的原始问题创建一个小示例(仅相关列/参数),以便我们可以尝试重现您描述的问题。我正在将null值传递给StoredProcess input,但它正在将现有值替换为null。我是否遗漏了什么?您可能无法回答这个问题,因为我正在从基于eclipse的工具调用该过程。
UPDATE SET 
SAP_UUID = Case When (I_SAP_UUID is not null and I_SAP_UUID <> '') Then I_SAP_UUID Else e.SAP_UUID End,
update set
s.sap_uuid = nvl(i_sap_uuid, e.sap_uuid),
I_SAP_UUID is not null and I_SAP_UUID <> ''
I_SAP_UUID is not null