两年多没有碰SQL Server 2000了,昨天整理电脑的时候发现了以前写的一些文档,今天就整理到博客上来吧。不然也对不起“彭建军的专栏”几个字了,呵呵。
很多时候,你试图写 insert into TableName……,当这个表的字段很多的时候,通常你都会很郁闷:因为有很多字段需要你写,即使 Ctrl + C and Ctrl + V 也会让你耗费不少时间。本存储过程就是将你的目的表中的所有字段列出来,并用 “,” 将它们连接起来。以后再碰到类似问题,就再也不会郁闷了……
/**
* 关于: MS SQL Server 2000 存储过程 - 1
* 作者:彭建军
* 存储过程名称: GetColumns
* 存储过程参数: @Table
* 存储过程功能: 列出目的表中的各个字段,并用","连接;
* 测试环境:SQL Server 2000 SP4 + Windows XP Sp2
* 更新时间:2006-7-8 16:36
**/
--创建存储过程
IF EXISTS (SELECT [NAME] FROM sysobjects WHERE xtype = 'P' AND [NAME] = 'GetColumns')
DROP PROC GetColumns
GO
CREATE PROC GetColumns @Table VARCHAR(100)
--WITH ENCRYPTION
AS
BEGIN TRANSACTION
--参数检查
IF (@Table IS NULL OR @Table = '')
BEGIN
RAISERROR('错误!缺少参数 @Table,请检查。',16,1)
ROLLBACK
RETURN
END
DECLARE @String VARCHAR(2000) --Out String
SET @String = ''
DECLARE @Col_Name VARCHAR(200) --Column Name
SET @Col_Name = ''
DECLARE TableCursor CURSOR FOR
SELECT [NAME] FROM syscolumns WHERE [ID] IN
(
SELECT [ID] FROM sysobjects WHERE [NAME] = @Table
)
ORDER BY colid
OPEN TableCursor
FETCH NEXT FROM TableCursor INTO @Col_Name
WHILE (@@FETCH_STATUS = 0)
BEGIN
SET @String = RTRIM(@String)+RTRIM(@Col_Name)+','
FETCH NEXT FROM TableCursor INTO @Col_Name
END
SET @String = SUBSTRING(@String,1,LEN(@String)-1) --去除逗号
CLOSE TableCursor
DEALLOCATE TableCursor
SELECT @String
COMMIT TRANSACTION
GO
--调用示例: EXEC GetColumns 'sysobjects'
本文介绍了一个SQLServer2000的存储过程,用于快速获取指定表的所有字段并以逗号分隔,有效提高编写INSERT语句时的工作效率。

被折叠的 条评论
为什么被折叠?



