日期:2014-05-17  浏览次数:20538 次

【提问】SQL Server中有没有数据字典可以查询数据库中有哪些带参数的存储过程?
如题,能查询出带参数的存储过程有哪些,参数分别是什么,参数的类型是什么。

多谢指教!

------解决方案--------------------
SQL code

SELECT  SPD.name '名称' ,
        SPM.name '参数名称' ,
        STP.name '变量类型' ,
        SPM.max_length '长度' ,
        SPM.is_output '是否返回值'
FROM    sys.procedures SPD
        LEFT JOIN sys.parameters SPM ON SPD.object_id = SPM.object_id
        LEFT JOIN sys.types STP ON SPM.system_type_id = STP.system_type_id
ORDER BY SPD.name

------解决方案--------------------
探讨
存储过程中怎样替换一段文本,比如:我想把变量的数据类型长度放大:@Param Varchar(20)改为:@Param Varchar(50)

------解决方案--------------------
SQL code
SELECT definition
FROM sys.sql_modules SM
WHERE EXISTS(SELECT 1 FROM sys.procedures SPD WHERE SM.object_id = SPD.object_id)

--获取后,替换所有的create procedure 为alter procedure,再替换所有的@parameter varchar(20) 为@parameter varchar(50)
--替换后,执行替换后代码即可。

--建议:还是一个一个来比较稳当些,毕竟存储过程的影响较大