提供任何更好的将 UPSERT 插入表格的方法:
- 以 ~1 行/秒的速度插入数据
- 表名是动态的,使用传递给它的 ObjectID 参数生成
以下过程抛出:“ORA-00942:表或视图不存在”
CREATE OR REPLACE PROCEDURE
PROCEDURE "SPINSERTDATA"
(
pObjectID IN RAW,
pDateTime IN TIMESTAMP,
pValue IN BINARY_DOUBLE,
)
AS
BEGIN
Declare
vQueryInsert VARCHAR2(1000);
vQueryUpdate VARCHAR2(1000);
vTableName VARCHAR2(30);
Begin
vTableName := FGETTABLENAME(POBJECTID => pObjectID);
vQueryUpdate := 'UPDATE ' || vTableName || ' SET "VALUE" = :1';
vQueryInsert := 'INSERT INTO ' || vTableName || ' ("DTTIME", "VALUE") VALUES (:1, :2)';
EXECUTE IMMEDIATE vQueryInsert USING pDateTime, pValue;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
EXECUTE IMMEDIATE vQueryUpdate USING pValue;
End;
END "SPINSERTDATA";
- 显然 MERGE 不起作用,因为 TableName 不能是动态的???
- 我是一个新手,我的第三个月的编码,我通过 STACKOVERFLOW 和谷歌搜索了 3 天,尝试了各种有趣和绝望的解决方案......如果你找到一个非常相关的链接,我将不胜感激。