Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SQL TRY-CATCH e le colonne mancanti

Alla domanda (b) è più facile rispondere:quello che stai affrontando è un controllo in fase di compilazione, che batte TRY-CATCH che funziona in fase di esecuzione.

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