[SQL] 使用游标获取所有用户存储过程的参数列表

--定义局部游标
--获取所有用户定义存储过程的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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容