Comment vérifier si une variable sql est déclarée?

Dans MS SQL Server. S'il vous plaît ne me dites pas à ctrl-f. Je n'ai pas access à toute la requête, mais je compose les colonnes qui dépendent de la déclaration de certaines variables.

Merci.

Edit: Je travaille avec un moteur de search bizarre. J'ai besoin d'écrire la partie select columns et le moteur s'occupera du rest (j'espère). Mais dans certains cas, ce moteur va déclarer des variables (heureusement, je connaîtrai les noms des variables), et dans d'autres cas ce n'est pas le cas. J'ai besoin de composer mes colonnes pour prendre ces variables lorsqu'elles sont déclarées, et donner des valeurs par défaut quand ces variables ne sont pas déclarées.

Compte tenu des limites de ma compréhension de ce que vous exécutez (je déchiffre le problème de mot pour signifier que votre "moteur de search" est en fait un "moteur de génération de requêtes", quelque chose comme un ORM), vous pourriez observer ce qui se passe sur le server dans ce scénario avec la requête suivante:

select sql_handle, st.text from sys.dm_exec_requests r cross apply sys.dm_exec_sql_text(r.sql_handle) st where session_id <> @@SPID and st.text like '%@<<parameter_name>>%'; 

La déclaration doit avoir commencé l'exécution pour pouvoir l'attraper. En fonction d'une multitude de situations, vous pouvez également l'extraire des statistics de requête: Cela vous permettra également d'get le plan de requête (s'il en a un), mais notez qu'il extraira aussi les statistics pour lui-même ainsi que la requête ci-dessus, vous devez donc faire preuve de discernement lorsque vous regardez les valeurs de text externe et de déclaration:

 select text, SUBSTRING( st.text, (qs.statement_start_offset / 2) + 1, ((CASE qs.statement_end_offset WHEN -1 THEN DATALENGTH(st.TEXT) ELSE qs.statement_end_offset END - qs.statement_start_offset) / 2) + 1) AS statement_text, plan_generation_num, creation_time, last_execution_time, execution_count ,total_worker_time, last_worker_time, min_worker_time, max_worker_time, total_physical_reads, min_physical_reads, max_physical_reads, last_physical_reads, total_logical_writes, min_logical_writes, max_logical_writes, last_logical_writes, total_logical_reads, min_logical_reads, max_logical_reads, last_logical_reads, total_elapsed_time, last_elapsed_time, min_elapsed_time, max_elapsed_time, total_rows,last_rows,min_rows,max_rows ,qp.* from sys.dm_exec_query_stats qs cross apply sys.dm_exec_sql_text(qs.sql_handle) st outer apply sys.dm_exec_query_plan(qs.plan_handle) qp where st.text like '%@<<parameter_name>>%';