从PL-SQL中获取受影响的行



我正在使用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运行MERGESELECT语句。网络电话。

无论如何,解决方案是直接的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

相关内容

  • 没有找到相关文章

最新更新