DECLARE @SQL VARCHAR(MAX)
SELECT @SQL = Util.dbo.StringConcat(SQL, '')
FROM (SELECT 'EXEC ' + ProcedureName + '
' + Util.dbo.StringConcat(' ' + ParameterName + ' ' + ColumnType + ' = ' + ISNULL(ParamDefault, 'NULL'), ',
') + '
GO
' AS SQL
FROM (SELECT TOP 999999
sc.name AS SchemaName,
tb.name AS ProcedureName,
co.name AS ParameterName,
Util.dbo.SPParamDefault(tb.name, co.name, co.is_output, sm.definition) AS ParamDefault,
ct.ColumnType,
co.parameter_id
FROM sys.schemas AS sc (NOLOCK)
INNER JOIN sys.procedures AS tb (NOLOCK) ON sc.SCHEMA_ID = tb.SCHEMA_ID
INNER JOIN sys.all_sql_modules sm (NOLOCK) ON sm.OBJECT_ID = tb.OBJECT_ID
INNER JOIN sys.parameters co (NOLOCK) ON co.OBJECT_ID = tb.OBJECT_ID
INNER JOIN sys.types AS ts (NOLOCK) ON ts.user_type_id = co.user_type_id
INNER JOIN sys.databases AS db (NOLOCK) ON db.database_id = DB_ID()
CROSS APPLY Util.dbo.GetColumnType(ts.name, co.max_length, co.PRECISION, co.scale, db.collation_name, db.collation_name) ct
WHERE tb.name LIKE 'sp%'
ORDER BY sc.name,
tb.name,
co.parameter_id) k
GROUP BY ProcedureName) k
EXEC Util.dbo.PrintLargeText
@SQL