几分钟前,我只是在搜索一个简单的语法(SQL server)查询,它将复制一个表Row。
这通常是在处理ASP.net项目时不时完成的,用查询测试数据 在 SQL SERVER管理工作室中。所以其中一个例程操作是复制一行,将所需的列更改为彼此不同,然后使用查询测试数据
所以我遇到了- this stored procedure-,作为Dan Atkinson的回答
但将其添加到存储所有非测试目的的地方让我思考 是否可以按排序顺序存储它们,以便我可以区分
'utils'或'testingPurpose'来自项目中使用的那些
(管理树视图中的默认文件夹是Programmabilty)也可能是另一个文件夹 或者这不是一个选择?
如果没有,我想到Utils.
这样的前缀(如果不存在其他方式)
dbo.Utils.CopyTableRow
dbo.Utils.OtherRoutineActions ....
或者有一种指定的方式来实现我的想法。
答案 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