Estoy ejecutando un proceso almacenado desde SSMS y recibo este mensaje de error:

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

Por supuesto que podría intentarlo y errar, pero me gustaría poder aprovechar el mensaje, y estoy un poco perplejo por el mensaje.
'line 80': ¿desde dónde? ¿De la cláusula BEGIN del Alter procedure? ¿O realmente se refiere a la línea 80 que veo cuando hago clic en Modify?
Además, ¿qué significa Batch Start Line 2?
Gracias !


editar : tenga en cuenta que NO estoy interesado en ayudar a resolver el problema (ya está resuelto). Solo quiero unas pautas claras sobre cómo interpretar la 'línea 80' y la 'Línea de inicio de lote 2', para que la próxima vez sepa inmediatamente dónde mirar.

enter image description here

11
Patrick Honorez 15 dic. 2016 a las 16:29

2 respuestas

La mejor respuesta

Al mirar el código de un procedimiento almacenado usando el Alterar procedimiento , la línea de error es del comando BEGIN, ya que el error ocurrió en el procedimiento, no en el Alterar procedimiento mando

  • BEGIN = línea 0
  • siguiente línea (el inicio real del procedimiento = 1
  • etcetera

La línea de lote 2 significa el segundo lote de declaraciones; esto significa que tiene un GO en algún lugar del procedimiento, y esto está en el segundo conjunto de declaraciones (http://sqlhints.com/tag/examples-of-sql-go-statement/), el primer conjunto que aparece antes del { {X1}}

14
SeanC 15 dic. 2016 a las 14:43

Acerca de Line n

N se refiere al número de línea de objeto considerando cualquier espacio dentro o antes de su cuerpo.

Ejemplo 1

Suponga que la siguiente es la ventana SQLQuery después de hacer clic en el botón Nueva consulta en SSMS

1. Create proc spTest1

2. As

3. Begin

4. Select 1/0

5. End

Después de ejecutar spTest1, obtendrá el siguiente mensaje

Msg 8134, nivel 16, estado 1, procedimiento spTest1, línea 4

Ejemplo 2

Suponga que la siguiente es la ventana SQLQuery después de hacer clic en el botón Nueva consulta en SSMS

1. 

2.

3.

4.

5.

6. Create proc spTest2

7. As

8. Begin

9. Select 1/0

10. End

Después de ejecutar spTest2, obtendrá el siguiente mensaje

Msg 8134, nivel 16, estado 1, procedimiento spTest2, línea 9

Conclusión sobre cómo obtener el número exacto

Para obtener el número exacto, utilice el procedimiento almacenado del sistema sp_helptext como sigue

Exec sp_helptext spName
1
ahmed abdelqader 15 dic. 2016 a las 13:50