sql >> Base de Datos >  >> RDS >> Sqlserver

SQL TRY-CATCH y las columnas que faltan

La pregunta (b) es más fácil de responder:lo que enfrenta allí es una verificación en tiempo de compilación, que supera a TRY-CATCH, que funciona en tiempo de ejecución.

Para (a)

DECLARE @L_ID_FOO_BAR INT;
DECLARE @SQL NVARCHAR(MAX) = '
  SELECT @L_ID_FOO_BAR = IDFOO 
  FROM BAR
  WHERE IDFOO = 5';

BEGIN TRY
  EXEC sp_executesql @SQL, N'@L_ID_FOO_BAR INT output', @L_ID_FOO_BAR output;
END TRY
BEGIN CATCH
  SELECT @L_ID_FOO_BAR = NULL -- redundant? it starts with NULL
END CATCH