如何解释此SQL Server错误消息

时间:2016-12-15 13:29:14

标签: sql-server ssms

我正在从SSMS执行存储过程,我收到此错误消息:

Msg 295, Level 16, State 3, Procedure spEdiCreateOrders, Line 80 [Batch Start Line 2]
Conversion failed when converting character string to smalldatetime data type.

当然我可以尝试和错误,但我希望能够利用这条消息,我对这条消息感到有点困惑。
' line 80':从哪里开始?来自BEGIN的{​​{1}}条款?或者它真的是指我点击Alter procedure时看到的第80行? 另外,Modify是什么意思?
谢谢!

编辑:请注意,我对解决问题没有兴趣(已经解决了)。我只想要一个关于如何解释第80行'和'批量开始第2行',以便下次我立即知道在哪里查看。

enter image description here

2 个答案:

答案 0 :(得分:8)

使用 Alter过程查看存储过程的代码时,错误行来自BEGIN命令,因为过程中发生错误,而不是 Alter过程< / em>命令

  • BEGIN =第0行
  • 下一行(程序的实际开始= 1
  • etc

批次行2表示第二批语句 - 这意味着您在过程中的某处有一个GO,这是在第二组语句(http://sqlhints.com/tag/examples-of-sql-go-statement/)中,第一组出现在之前GO

答案 1 :(得分:1)

关于Line n

N它是指考虑其中或其身体之前的任何空格的对象行数。

示例1

SSMS

中点击新查询按钮后,假设下一个是SQLQuery窗口
1. Create proc spTest1

2. As

3. Begin

4. Select 1/0

5. End

执行spTest1后,您将收到下一条消息

  

Msg 8134,Level 16,State 1,Procedure spTest1,Line 4

示例2

SSMS

中点击新查询按钮后,假设下一个是SQLQuery窗口
1. 

2.

3.

4.

5.

6. Create proc spTest2

7. As

8. Begin

9. Select 1/0

10. End

执行spTest2后,您将收到下一条消息

  

Msg 8134,Level 16,State 1,Procedure spTest2,Line 9

结论如何获得准确的数字

要获得准确的数字,请使用系统存储过程sp_helptext作为下一个

Exec sp_helptext spName