[SQL] 使用游标获取所有用户存储过程的参数列表
2016-03-04 本文已影响40人
何幻
--定义局部游标
--获取所有用户定义存储过程的ID
DECLARE SP_Cursor CURSOR LOCAL FOR
SELECT id,name
FROM sysobjects
WHERE xtype = 'P'
ORDER BY name
DECLARE @id INT,@name NVARCHAR(max)
--打开游标
OPEN SP_Cursor
--使用游标读取下一条数据
FETCH NEXT FROM SP_Cursor INTO @id,@name
--获取给定ID的存储过程的参数
SELECT @name SP_NAME, a.name PARAM_NAME, b.name PARAM_TYPE, a.length LENGTH, a.isoutparam OUT_PARAMS
FROM syscolumns a
LEFT JOIN systypes b ON a.xusertype=b.xusertype
WHERE a.id=@id
--如果游标读取成功了
WHILE @@FETCH_STATUS=0
BEGIN
FETCH NEXT FROM SP_Cursor INTO @id,@name
SELECT @name SP_NAME, a.name PARAM_NAME, b.name PARAM_TYPE, a.length LENGTH, a.isoutparam OUT_PARAMS
FROM syscolumns a
LEFT JOIN systypes b ON a.xusertype=b.xusertype
WHERE a.id=@id
END
--关闭和释放游标
CLOSE SP_Cursor
DEALLOCATE SP_Cursor