O SQL Server (assim como outros bancos) não possui recursos nativos para este tipo de verificação (matemática).
Então, não seria possível (a não ser com muito trabalho braçal em T-Sql) proteger a expressão a tal ponto de informar ao usuário: "Olha, está faltando fechar o parêntesis."
Podem haver uma infinidade de erros em uma expressão aritmética como esta. Aliás, não sei se percebeu, mas está faltando um operador matemático antes da abertura do parêntesis.
Esta "validação", no mundo perfeito, teria que avisar que está faltando um "operador matemático antes da abertura do primeiro parêntesis" (sim, do primeiro, pois podem existir diversos parêntesis).
Impossível! (A não ser que se queira definir uma lógica simples - Que sempre será complexa em T-Sql).
O que se pode fazer é validar a expressão procurando resgatar o resultado dela, e ponto final. Consequentemente, se o SQL não conseguir resolver a expressão, é porque existe "algum" erro (seja qual for). E neste caso você pode "tratar" este erro de alguma
maneira (por exemplo, jogando uma informação para o usuário de que a expressão está incorreta).
Segue exemplo:
Begin Try
Exec ('Select 1 + 1 + (3 * 7 - 1')
End Try
Begin Catch
Print 'Existe um erro na fórmula. Verifique!'
End Catch
No exemplo acima, como está faltando o fechamento do parêntesis dentro da expressão matemática, o SQL não consegue resolver a fórmula e, consequentemente, "entra" no bloco Catch.
Ir além disso é muito complicado e nem sei se valeria à pena.
Roberson Ferreira - Database Developer
Acesse:
www.robersonferreira.com.br
Email:
contato@robersonferreira.com.br
Se esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.