CREATE FUNCTION dbo.GetProcedureFromExecuteSQL (@SQL VARCHAR(MAX))
RETURNS TABLE
AS
RETURN
SELECT COALESCE(d1, b1) AS ProcSQL
FROM (SELECT 'sp_executesql N''' AS sp) s
CROSS APPLY (SELECT CHARINDEX (sp, @sql)AS a1) a
CROSS APPLY (SELECT CASE WHEN a1 > 0 THEN LTRIM (SUBSTRING (@sql, a1 + LEN (sp), LEN (@sql))) END AS b1) b
CROSS APPLY (SELECT CASE WHEN a1 > 0 THEN CHARINDEX ('@', b1) END AS c1) c
CROSS APPLY (SELECT CASE WHEN c1 > 0 THEN SUBSTRING (b1, 1, c1- 1) END d1) d