Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Unterschied zwischen Kompilierfehlern und Laufzeitfehlern in SQL Server?

Kompilierungsfehler treten während des Generierens eines Ausführungsplans auf. Laufzeitfehler treten auf, wenn der Plan generiert und ausgeführt wird.

Die einzige Möglichkeit, zwischen den beiden zu unterscheiden, ist, ob ein Plan AFAIK generiert wird oder nicht.

Beispiele

/*Parse Error*/
SELEC * FROM master..spt_values

GO

/*Bind Error*/
SELECT * FROM master..spt_values_

GO


/*Compile time - constant folding error*/
SELECT LOG(0)
FROM master..spt_values

GO

/*Runtime Error*/
DECLARE @Val int = 0
SELECT  LOG(@Val)
FROM master..spt_values

Die letzten 2 lösen genau denselben Fehler aus, obwohl einer ein Kompilierzeitfehler und der andere ein Laufzeitfehler ist.