我正在从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行',以便下次我立即知道在哪里查看。
答案 0 :(得分:8)
使用 Alter过程查看存储过程的代码时,错误行来自BEGIN命令,因为过程中发生错误,而不是 Alter过程< / em>命令
批次行2表示第二批语句 - 这意味着您在过程中的某处有一个GO
,这是在第二组语句(http://sqlhints.com/tag/examples-of-sql-go-statement/)中,第一组出现在之前GO
答案 1 :(得分:1)
关于Line n
N
它是指考虑其中或其身体之前的任何空格的对象行数。
示例1
在SSMS
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
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