Tenho um procedimento armazenado que contém uma única consulta select. Dentro da consulta, há alguns aliases que representam uma fórmula ou expressão.
É possível extrair o cálculo/fórmula/expressão para quem tem um?
No exemplo abaixo, estou tentando extrair algo como:
"s * 2" para ScoreTimesTwo
"s * 5" para ScoreTimesFive
"CASE..." (a declaração completa do caso) para ConditionalScore
Além disso, escrevi a consulta de forma a cobrir o fato de que campos/expressões podem ser atribuídos a aliases de diferentes maneiras (equals ou "AS") e as expressões podem estar na mesma linha ou em várias linhas.
Tentei usar sys.dm_exec_describe_first_result_set, mas parece que ele só identifica colunas de origem referenciadas diretamente (ou seja, quando elas não fazem parte de uma fórmula) e nunca a fórmula em si, que é o que preciso.
/* Drop and create the test score table */
DROP TABLE IF EXISTS Test_ScoreTable
GO
CREATE TABLE Test_ScoreTable(s INT)
GO
/* Insert sample data into the score table */
INSERT INTO Test_ScoreTable(s)
SELECT t.s
FROM (VALUES (100), (50), (10)) t(s)
GO
/* Drop and create test score stored procedure */
DROP PROCEDURE IF EXISTS Test_ScoreStoredProcedure
GO
CREATE PROCEDURE Test_ScoreStoredProcedure
AS
SELECT Score = t.s,
ScoreTimesTwo = t.s * 2,
t.s * 5 AS ScoreTimesFive,
ConditionalScore = CASE t.s
WHEN 100 THEN 'Good'
WHEN 10 THEN 'Bad'
ELSE 'Eh...'
END
FROM Test_ScoreTable t
GO
/* Attempt to extract the calculations and expressions */
SELECT s.[name], s.source_column, s.is_computed_column, *
FROM sys.dm_exec_describe_first_result_set('Test_ScoreStoredProcedure', NULL, 1) s