一个用于返回所有存储过程及其参数的T-SQL
来源:互联网 发布:java getinstance 编辑:程序博客网 时间:2024/05/01 14:55
SET
NOCOUNT
ON
------the max length of the parameters, using to format parameters-----------
DECLARE
@MaxParamLen
INT SET
@MaxParamLen=
20
-----display parameters in upper case or not-----------------------------
DECLARE
@UpperParamType
BIT SET
@UpperParamType =
1
--------the table variable to save stored procedures with parameters------------------------
DECLARE
@SPTable
TABLE
(
Id INT IDENTITY PRIMARY KEY,
SPName
SYSNAME
,
ParameterName
SYSNAME
,
ParameterType
SYSNAME
,
Parameterlength
INT
)
---------insert stored procedures with parameters---------------------------------
INSERT
INTO @SPTable(SPName,ParameterName,ParameterType,Parameterlength
)
SELECT
o.Name,CHAR(9)+p.Name,t.Name,p.
max_length
FROM
sys.objects
o
INNER JOIN sys.parameters p ON o.object_id=p.
object_id
INNER JOIN sys.types t ON p.system_type_id=t.
user_type_id
WHERE
Type=
'P'
ORDER
BY o.
Name
-------------set max parameter length-----------------------------
SET
@MaxParamLen=(SELECT MAX(LEN(LTRIM(RTRIM(ParameterName)))) FROM @SPTable)+
2
-----------set parameter type to upper case-------------------------------------
IF
@UpperParamType =
1
UPDATE
@SPTable
SET
ParameterType=UPPER(ParameterType
)
-------------------set the length of --NCHAR and NVARCHAR to its half --------------------------------------
UPDATE
@SPTable
SET
Parameterlength=Parameterlength/
2
WHERE
ParameterType in ('nchar','nvarchar'
)
-----------set parameter length to null for int type and so on-------------------------------------
UPDATE
@SPTable
SET
Parameterlength
=null
WHERE
ParameterType in ('binary','varbinary','int','bigint','samllint','bit','image','ntext','uniqueidentifier','datetime','smalldatetime'
)
------------add length to parameter type ---------------------------------
UPDATE
@SPTable
SET
ParameterType=ParameterType
+
case
when Parameterlength IS NULL THEN ',' ELSE '('+CONVERT(VARCHAR(5),Parameterlength)+'),' END
-------------add space after parameter name to format parameters------------------------------------
UPDATE
@SPTable
SET
ParameterName=ParameterName+REPLICATE(' ',@MaxParamLen-LEN(ParameterName
))
WHERE
LEN(ParameterName)<
@MaxParamLen
-------------remove the comma from the last parameter--------------------------------------------------
UPDATE
sp
SET
ParameterType=SUBSTRING(ParameterType,1,LEN(ParameterType)-1
)
FROM
@SPTable sp
INNER JOIN (SELECT SPName,MAX(Id)
Id
FROM
@SPTable
GROUP BY SPName)
lp
ON sp.Id=lp.
Id
-------------add '(' to the first parameter------------------------------------------------------------------------
UPDATE
sp
SET
ParameterName='('+CHAR(13)+
ParameterName
FROM
@SPTable sp
INNER JOIN (SELECT SPName,MIN(Id)
Id
FROM
@SPTable
GROUP BY SPName)
lp
ON sp.Id=lp.
Id
-------------add ')' to the last parameter------------------------------------------------------------------------
UPDATE
sp
SET
ParameterType=ParameterType+CHAR(13)+
')'
FROM
@SPTable sp
INNER JOIN (SELECT SPName,MAX(Id)
Id
FROM
@SPTable
GROUP BY SPName)
lp
ON sp.Id=lp.
Id
---------------clear the repeated stored procedure names from @SPTable--------------------------------------
UPDATE
sp
SET
SPName=
''
FROM
@SPTable sp
INNER JOIN (SELECT SPName,MIN(Id)
Id
FROM
@SPTable
GROUP BY SPName)
fp
ON sp.SPName=fp.SPName and sp.Id>fp.
Id
-------------add 'Tab' to the beginning of parameter names-------------------------------------------------------
UPDATE
sp
SET
SPName=CHAR(13)+
SPName
FROM
@SPTable sp
WHERE
SPName<>
''
--------show the result of stored procedures-it is recommanded to show the result in text mode---------------------
SELECT
SPName+ParameterName+
ParameterType
FROM
@SPTable
- 一个用于返回所有存储过程及其参数的T-SQL
- 用于执行(计算) "字符串表达式" 的 T-SQL 存储过程
- 用于执行(计算)字符串表达式的T-SQL存储过程
- SQL读取存储过程返回的参数
- 用于 暂停(开启)所有触发器 的一个存储过程
- 一个用于获取空ID的SQL Server存储过程
- T-SQL编程(带输入参数的存储过程)
- T-SQL编程(带输出参数的存储过程)
- T-SQL编程(带输出参数的存储过程)
- 如何得到SQL存储过程的参数及其类型
- SQL - 如何查询某个存储过程的的所有参数:
- SQL Server存储过程返回参数
- SQL Server中及其有用的一个存储过程
- C#获得sql存储过程return返回的值和返回参数返回的值
- 用SQL语句获得一个存储过程返回的表
- SQL存储过程参数内容通过XML格式传送,把所有SQL语句操作放到一个存储过程里
- 用于处理树的一个存储过程
- 转贴:利用T——SQL得到相关表的所有信息 存储过程
- java数据库开发中两种注册oracle驱动的方式
- 浅谈.NET下的多线程和并行计算(六)线程池基础下 (转)
- C++与人工智能
- 你会用sizeof吗?
- 浅谈.NET下的多线程和并行计算(七)基于多线程的基本组件 (转)
- 一个用于返回所有存储过程及其参数的T-SQL
- 浅谈.NET下的多线程和并行计算(八)Winform中多线程编程基础上
- ANSI 和 Unicode
- 要考试了 微机原理
- android service
- WPF/Silverlight 控件的基本组成
- 应用程序测试经验漫谈(3)--兼容性
- 2009十大网络流行语 中英文对照读本 (搞笑)
- Eclipse插件开发引用外部包