Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL TRY-CATCH e as colunas ausentes


A pergunta (b) é mais fácil de responder - o que você está enfrentando é uma verificação em tempo de compilação, que supera o TRY-CATCH, que funciona em tempo de execução.

Para)
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