SQL

[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
上一篇 下一篇

猜你喜欢

热点阅读