点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我有一个表格,其中包含以下列:ID,姓名,年龄,地址。
我想在hana上做一个UPSERT SP,可以做到:
- 插入新行。 在每个sp调用中
- 更新不同列。
SP看起来像这样:
PROCEDURE UPSERT_SP( ID varchar(10), NAME varchar(20), AGE int, 地址varchar(50)
:ID,
)
BEGIN UPSERT" MT_TABLE" AS MT VALUES(
IFNULL(:NAME,MT。" NAME"),
IFNULL(:AGE,MT。" AGE"),
IFNULL(:ADDRESS, MT。" ADDRESS")))
MT。" GUID" =:GUID;
END;
现在,如果我打电话给我的SP,我希望发生这种情况:
- 调用UPSERT_SP('new_id','new_name',55,'new_address')-表中不存在'new_id',因此将创建新行。
- CALL UPSERT_SP('new_id',null,100,null)-表中存在'new_id',因此'new_id'行将仅更新AGE列,因为其他两个(名称,地址)均为'null'
我知道我编写的sp在SQL Server Manager中有效,但是由于某种原因,SAP HANA不允许我这样做。 当我尝试激活sp时,出现以下错误:
不允许的列:MT.NAME
如何获得想要达到的结果(我已经使用子查询尝试过UPSERT,但没有用)。
似乎您正在尝试实现UPSERT查询忽略NULL值。 如果我们不加修改地使用UPSERT查询,我们希望在第二次执行过程中,除老化之外,还会更新new_name和new_address(值将为NULL)。 要实施这种解决方法,您可以查看以下代码段示例:
对,没有执行我的代码。 为什么您可以简单地按设计使用UPSERT并传递而不是实际相同值的NULL值? 如果有特定要求并且您仍然需要它-您始终可以使用SQLScript的功能并检查值是否为空-
一周热门 更多>