Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL TRY-CATCH et les colonnes manquantes

Il est plus facile de répondre à la question (b) - ce à quoi vous êtes confronté est une vérification au moment de la compilation, qui l'emporte sur TRY-CATCH qui fonctionne au moment de l'exécution.

Pour (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