【发布时间】:2013-09-25 16:12:19
【问题描述】:
我的 SP 确实包含一个 DELETE 和一个 INSERT INTO 语句。如果 DELETE 语句成功,而 INSERT INTO 不成功,JAVA 将只查看第一条语句并得出整个 SP 执行成功的结论,这可能是错误的。
如果只有一个语句失败,我如何执行多于一个语句并在 JAVA 中获得异常。 我在 SQL 中尝试过使用 TRY-CATCH,但所有的结论都是因为第一个语句成功,所以所有语句都正确执行了。
这是一个 MS SQL 2008 数据库
ALTER PROCEDURE [testing]
@bikes varchar(8000),
@groupw varchar(4),
@name char(6)
AS
BEGIN
DELETE CP_customer_kngr_corr_s WHERE knid in ('blue')
DECLARE @pos INT
DECLARE @len INT
DECLARE @value varchar(8000)
set @pos = 0
set @len = 0
set @bikes= @bikes +','
WHILE CHARINDEX(',', @bikes, @pos)>0 BEGIN
set @len = CHARINDEX(',', @bikes, @pos+1) - @pos
set @value = SUBSTRING(@bikes, @pos, @len)
INSERT INTO [bikes]
([bikes])
VALUES
(@value)
set @pos = CHARINDEX(',', @bikes, @pos+@len) +1
END
END
【问题讨论】:
-
"JAVA 只会看第一条语句就得出整个SP执行成功的结论"是什么意思?您可能误解了结果。请说明您如何从 Java 调用该过程,以及您如何得出仅执行第一条语句的结论。您可能需要在存储过程中添加
SET NOCOUNT ON,或者您需要遍历返回给 JDBC 驱动程序的所有结果。
标签: java tsql stored-procedures resultset