SET NOEXEC (Transact-SQL)

Compila cada consulta, pero no la ejecuta.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL (Transact-SQL)

Sintaxis

SET NOEXEC { ON | OFF }

Notas

Cuando SET NOEXEC es ON, SQL Server compila cada lote de instrucciones Transact-SQL pero no las ejecuta.Cuando SET NOEXEC es OFF, todos los lotes se ejecutan después de su compilación.

La ejecución de instrucciones en SQL Server tiene dos fases: compilación y ejecución. Esta opción es útil para hacer que SQL Server valide la sintaxis y los nombres de objeto del código Transact-SQL durante la ejecución. También es útil para depurar instrucciones que normalmente serían parte de un lote de instrucciones mayor.

La opción SET NOEXEC se establece en tiempo de ejecución, no en tiempo de análisis.

Permisos

Debe pertenecer a la función public.

Ejemplos

El ejemplo siguiente utiliza NOEXEC con una consulta válida, una consulta con un nombre de objeto no válido y una consulta con sintaxis incorrecta.

USE AdventureWorks;
GO
PRINT 'Valid query';
GO
-- SET NOEXEC to ON.
SET NOEXEC ON;
GO
-- Inner join.
SELECT e.EmployeeID, e.Title, v.Name
FROM HumanResources.Employee e 
   INNER JOIN Purchasing.PurchaseOrderHeader poh
   ON e.EmployeeID = poh.EmployeeID
   INNER JOIN Purchasing.Vendor v
   ON poh.VendorID = v.VendorID;
GO
-- SET NOEXEC to OFF.
SET NOEXEC OFF;
GO

PRINT 'Invalid object name';
GO
-- SET NOEXEC to ON.
SET NOEXEC ON;
GO
-- Function name used is a reserved keyword.
USE AdventureWorks;
GO
CREATE FUNCTION dbo.Values(@EmployeeID INT)
RETURNS TABLE
AS
RETURN (SELECT PurchaseOrderID, TotalDue
   FROM dbo.PurchaseOrderHeader
   WHERE EmployeeID = @EmployeeID)
-- SET NOEXEC to OFF.
SET NOEXEC OFF
GO

PRINT 'Invalid syntax';
GO
-- SET NOEXEC to ON.
SET NOEXEC ON;
GO
-- Built-in function incorrectly invoked
SELECT *
FROM fn_helpcollations;
-- Reset SET NOEXEC to OFF.
SET NOEXEC OFF;
GO