Com base no seguinte código:
/* This SP takes a query and a unique temporary table name as input...
The outputs is a string with the command to create the tmp table based on the query that is given in the @SRC parameter
*/
EXEC dbo.createTmpFromQuery @SRC,@uniqueTMP,@createTmpStr=@SQLStr OUTPUT
/* This executed the query that will create the tmp table and insert the data from @SRC */
EXEC(@SQLStr)
Todo o procedimento armazenado que chama essas 2 linhas (entre muitas outras) está em um Try Catch. Acabei de encontrar um problema em que a consulta no @SRC teve um erro de sintaxe que chamou a parte Catch:
BEGIN CATCH
ROLLBACK TRANSACTION;
SET @ERRORMESSAGE=CASE WHEN @ERRORMESSAGE='' THEN ERROR_MESSAGE() ELSE @ERRORMESSAGE END
RAISERROR (@ERRORMESSAGE,16,1)
END CATCH
o Try tem muitas validações e eu configurei @ErrorMessage para mensagens personalizadas na maioria dos casos. Nesse caso, gostaria de definir uma mensagem personalizada em vez de receber a mensagem de erro padrão
(example): Incorrect syntax near 'FROM'.
Estou tentando descobrir como posso obter o EXEC(@SqlStr) retornar um código bem-sucedido ou com falha, para que eu possa definir o @ErrorMessage antes que ele entre na parte de captura do código.
Eu encontrei a solução... Envolvi as instruções em outro try catch dentro do grande try catch (não sabia que podemos fazer isso) :-(
Testei e funcionou. Espero que isso ajude mais alguém...