创建'util' - 存储过程部分,与.net帮助程序类一样

时间:2012-09-28 22:29:01

标签: sql-server-2008 stored-procedures

几分钟前,我只是在搜索一个简单的语法(SQL server)查询,它将复制一个表Row。

这通常是在处理ASP.net项目时不时完成的,用查询测试数据 在 SQL SERVER管理工作室中。所以其中一个例程操作是复制一行,将所需的列更改为彼此不同,然后使用查询测试数据

所以我遇到了- this stored procedure-,作为Dan Atkinson的回答

但将其添加到存储所有非测试目的的地方让我思考 是否可以按排序顺序存储它们,以便我可以区分

'utils'或'testingPurpose'来自项目中使用的那些

(管理树视图中的默认文件夹是Programmabilty)也可能是另一个文件夹 或者这不是一个选择?

如果没有,我想到Utils.这样的前缀(如果不存在其他方式)

dbo.Utils.CopyTableRow
dbo.Utils.OtherRoutineActions ....

或者有一种指定的方式来实现我的想法。

1 个答案:

答案 0 :(得分:0)

这是我制作的第一个“Util”存储过程,发现它是唯一的解决方案 通过Util _来预备它

ALTER PROCEDURE [dbo].[Utils_TableRowCopy](
@TableName VARCHAR(50) ,
@RowNumberToCopy INT
)



AS
BEGIN

declare @RowIdentity sysname =
(SELECT name FROM sys.identity_columns WHERE object_id = object_id(@TableName)
 )

DECLARE @columns VARCHAR(5000), @query VARCHAR(8000);
SET @query = '' ;

SELECT @columns =
    CASE
        WHEN @columns IS NULL THEN column_name
        ELSE @columns + ',' + column_name
    END
FROM INFORMATION_SCHEMA.COLUMNS
WHERE (
    TABLE_NAME = LTRIM(RTRIM(@TableName))
    AND
    column_name <> LTRIM(RTRIM(@RowIdentity))
);

SET @query = 'INSERT INTO ' + @TableName + ' (' + @columns + ') SELECT ' + @columns + ' FROM ' + @TableName + ' WHERE ' + @RowIdentity + ' = ' + CAST(@RowNumberToCopy AS VARCHAR);

--SELECT SCOPE_IDENTITY();
declare  @query2 VARCHAR(100) =  ' Select Top 1 * FROM '+ @TableName +' Order BY ' + @RowIdentity + ' desc' ;
EXEC (@query);
EXEC (@query2);

END