昨天整理的文章《SQL Server获取数据库下所有的表名和字段名》提到如何查出数据库中所有的表名及各个表的字段名,文章最后也提到了如果今天有空了再整理一篇游标的简单使用。
微软官方文档 Cursors (SQL Server) - SQL Server | Microsoft Learn 中有比较详细的介绍,包括什么是游标,游标的使用场景,游标的类型以及游标的语法 DECLARE CURSOR (Transact-SQL) - SQL Server | Microsoft Learn。
游标的功能不简单,我平时工作中并没有使用多复杂,下面这段脚本就是利用游标结合前两天的文章(1.给表和字段添加说明属性MS_Description && 2.SQL Server获取数据库下所有的表名和字段名 )给表中所有字段添加说明属性
DECLARE @column_id INT;
DECLARE @column_name NVARCHAR(MAX)
DECLARE InitColumnDescription CURSOR FOR
SELECT name,
column_id
FROM sys.columns
WHERE object_id = @tableId;
OPEN InitColumnDescription;
FETCH NEXT FROM InitColumnDescription
INTO @column_name,
@column_id;
WHILE @@FETCH_STATUS = 0
BEGIN
IF NOT EXISTS
(
SELECT *
FROM sys.extended_properties e
WHERE @tableId = e.major_id
AND @column_id = e.minor_id
)
BEGIN
EXECUTE sp_addextendedproperty N''MS_Description'',
'''',
N''SCHEMA'',
@schema,
N''TABLE'',
@tableName,
N''COLUMN'',
@column_name;
END;
FETCH NEXT FROM InitColumnDescription
INTO @column_name,
@column_id;
END;
CLOSE InitColumnDescription;
DEALLOCATE InitColumnDescription;
补充说明一下,我这篇文章只针对SQL Server,所有自己写的文章主要也是为了自己做一下记录,方便以后需要时查找使用,同时也可以分享给需要的同行参考。如有不妥,或更好的方法,望不吝赐教,友好探讨,轻拍。未特别标明转载均为本人原创整理,码字不易,转载或引用时希望可以标明出处,谢谢。