我正在使用ODP。然后运行PL/SQL命令合并Oracle 10G数据库中的表。我的命令如下:
MERGE INTO TestTable t
USING (SELECT 2911 AS AR_ID FROM dual) s
ON (t.AR_ID = s.AR_ID)
WHEN MATCHED THEN
UPDATE SET t.AR_VIUAL_IMPAIRMENT = 1
WHEN NOT MATCHED THEN
INSERT (AR_S_REF)
VALUES ('abcdef');
SELECT sql%ROWCOUNT FROM dual;
合并命令成功运行,并按我的需要更新/插入。问题是我想知道有多少记录被更新了。
当我运行上面的语句时,"ORA-00911: invalid character error"。
请告诉我怎样才能恢复受影响的行。谢谢百万。
您混淆了一些事情:MERGE语句是一个普通的SQL命令,而PL/SQL代码总是由BEGIN/END(和可选的DECLARE)分隔。此外,SQL%ROWCOUNT
是一个PL/SQL变量,不能出现在PL/SQL之外。
我不太明白您是否使用两个单独的或共同的ODP运行MERGE和SELECT语句。网络电话。
无论如何,解决方案是直接的ODP。NET:对OracleCommand.ExecuteNonQuery()
执行MERGE命令。此方法返回受影响的行数。
您可以将代码放入返回%ROWCOUNT的PLSQL函数中。
然后从ODP.net调用该函数,设置命令类型为存储过程,并使用ExecuteLiteral
方法,该方法将返回行计数作为对象实例,您可以将其转换为int。
不可能只返回"已更新"的行数。
(如前所述,行计数是受影响(插入和更新)行的数量)
有一个很好的讨论问汤姆:http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:122741200346595110