【发布时间】:2015-11-13 00:00:11
【问题描述】:
您好,我无法在合并语句中捕获错误。
在 SQL Plus 中运行 merge 语句会出现以下错误:ORA-00932: inconsistent datatypes: expected DATE got NUMBER
当我在 Vb.net 中使用 ExecuteNonQuery 执行语句时不会出现任何异常。
有没有办法在 Vb.net 中捕获该错误而不在合并语句中使用日志错误?
编辑:
Try
Dim count as Interger=0
Dim cmd As New OleDb.OleDbCommand(strSQL)
count = cmd .ExecuteNonQuery()
Catch ex as Exception
... Respond ...
End Try
有错误的示例合并语句:
MERGE INTO TABLE_A a USING
(
SELECT ID,SUM(AMOUNT) AMOUNT
FROM TABLE_B b
GROUP BY ID
) b
ON ( b.ID=a.ID )
WHEN MATCHED THEN
UPDATE SET a.AMOUNT=a.AMOUNT+b.AMOUNT
WHEN NOT MATCHED THEN
INSERT (ID, DT, AMOUNT) VALUES (b.ID, 0, b.AMOUNT);
SQL Plus 在插入时会出错,但 Vb.net 无法捕获。
字段 DT 的数据类型是 DATE。
【问题讨论】:
-
如果您向我们展示您的代码会很好。
-
@Lalit Kumar B 示例代码已添加。
-
@Lalit Kumar B 添加了示例合并语句。
-
DATE需要插入一个零长度字符串吗?只需从 insert 中删除
dt,对于新插入的行,它无论如何都是 NULL 。我正在考虑如何获得ORA-00932。您能否发布您的 SQL*Plus 会话。发布一个有效的测试用例,以便我们重现您声称的内容。 -
@Lalit Kumar B 认为 Vb,net 无法捕获但 SQL Plus 的合并语句示例会出错。
标签: vb.net oracle error-handling oledb oledbcommand