![](/img/trans.png)
[英]Autoincrement value is changing when database error occured in sql server 2014
[英]How to detect on which value error occured?
想象一下,我有一個存儲過程,它試圖檢查其值是否為datetime類型,並將其轉換為日期。
我正在使用TRY CATCH
塊來捕獲是否發生錯誤。 我在CATCH
塊中選擇ERROR_LINE()
和ERROR_MESSAGE()
。
問題是ERROR_LINE()
僅返回發生錯誤的過程的行號(有時返回錯誤的行),而ERROR_MESSAGE()
僅返回錯誤的描述,如Conversion failed when converting...
列中有100000多個值,我不知道發生在哪個值上的錯誤。 所以我需要檢查超過100000個值?
無論如何,這里都可以打印錯誤消息+發生錯誤的值?
您可以這樣嘗試:
if(isDate(yourdatevalue))
begin
--some code
end
else
begin
print yourdate + 'There is an error'
end
您可以將RAISERROR
用作:
DECLARE @Test TABLE (id INT, varchardate VARCHAR(200))
INSERT INTO @Test VALUES (1,'200410212'),(2,'A'),(3,'2015-04-24 08:08:01.083')
DECLARE @err_message nvarchar(255)
DECLARE @varchardate VARCHAR(200), @Id int
DECLARE @getvarchardate CURSOR
SET @getvarchardate = CURSOR FOR
SELECT varchardate ,id
FROM @Test
OPEN @getvarchardate
FETCH NEXT
FROM @getvarchardate INTO @varchardate ,@Id
WHILE @@FETCH_STATUS = 0
BEGIN
IF isDate(@varchardate) = 0
begin
SET @err_message = @varchardate + ' and '
+ CAST (@Id AS VARCHAR(10)) + ' Not valid Date'
RAISERROR (@err_message, 11,1)
END
ELSE
begin
SELECT id,varchardate
FROM @Test
END
FETCH NEXT
FROM @getvarchardate INTO @varchardate ,@Id
END
CLOSE @getvarchardate
DEALLOCATE @getvarchardate
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.