当前位置: 首页 > 面试题库 >

使用T-SQL插入n条记录

段干昊然
2023-03-14
问题内容

我想在表中添加可变数量的记录(天)

我已经看到了一个很好的解决方案:

SET @nRecords=DATEDIFF(d,'2009-01-01',getdate())
SET ROWCOUNT @nRecords
INSERT int(identity,0,1) INTO #temp FROM sysobjects a,sysobjects b
SET ROWCOUNT 0

但是可悲的是,这在UDF中不起作用(因为#temp和SET ROWCOUNT)。知道如何实现吗?

目前,我正在使用WHILE和表变量来完成此操作,但是就性能而言,这并不是一个好的解决方案。


问题答案:

这是我正在使用的方法,并且对于我的目的和使用SQL
2000来说效果最佳。因为就我而言,它位于UDF中,所以我不能使用##或#临时表,因此我使用表变量。我正在做:

DECLARE @tblRows TABLE (pos int identity(0,1), num int) 
DECLARE @numRows int,@i int


SET @numRows = DATEDIFF(dd,@start,@end) + 1
SET @i=1

WHILE @i<@numRows
begin
    INSERT @tblRows SELECT TOP 1 1 FROM sysobjects a

    SET @i=@i+1
end


 类似资料:
  • 问题内容: 我在数据库上有一些性能测试结果,我要做的是将每1000条记录 分组 (以前按日期升序排列),然后将结果与 AVG 进行汇总。 我实际上正在寻找标准的SQL解决方案,但是任何T-SQL特定的结果也值得赞赏。 查询如下所示: 问题答案: 这样的事情应该会让您入门。如果您可以提供实际的架构,我可以进行适当的更新。

  • 问题内容: 我试图使用T-SQL的MERGE语句插入许多记录,但是当源表中有重复的记录时,我的查询无法插入。失败原因是: 目标表有一个基于两列的主键 源表可能包含重复记录,这些记录违反了目标表的主键约束(引发了“违反主键约束”) 我正在寻找一种方法来更改我的MERGE语句,以便它要么忽略源表中的重复记录,并且/或者将尝试/捕获INSERT语句以捕获可能发生的异常(即,所有其他INSERT语句都将运

  • 本文向大家介绍php CI框架插入一条或多条sql记录示例,包括了php CI框架插入一条或多条sql记录示例的使用技巧和注意事项,需要的朋友参考一下 1、插入一条记录 2、插入多条记录

  • 问题内容: 设想 我需要每天通过电子表格(唯一可用的选项)更新SQL 2008数据库。该格式非常基本,但是可能有数百万条记录。Column1和Column3将具有许多预定义的重复值,这些值已经提取到单独的表中。 电子表格样本 数据库设置 我的数据库设置了三个单独的表: 问题 如何编写SQL来插入与查找表中的信息匹配的记录?我该怎么办: 对此: 问题答案: 您可以尝试这样的事情: 没有任何容错功能,

  • 问题内容: 我有一张表: 在UI上更新消息后,我调用存储的proc来更新该表。在某些情况下,用户可能仅更新主题,而在其他情况下,仅更新正文。我希望此存储的过程仅更新已更改的内容,因此我还传递了一些标志,用于显示主题或正文是否已更新: 现在我很困惑如何构建条件语句。我的第一个想法是使用: …但这似乎不是正确的语法,因为它必须是分配的右侧。 有什么想法可以做到吗?(请记住,实际上有6个参数可以更新,而

  • 问题内容: 在此找到了两个类似的问题,但无法弄清楚如何应用于我的方案。 我的函数有一个名为 @IncludeBelow 的参数。值是0或1(BIT)。 我有这个查询: 如果@IncludeBelow为0,我需要查询如下: 如果@IncludeBelow为1,则最后一行需要排除。(即不应用过滤器)。 我猜想它必须是一条语句,但无法弄清楚语法。 这是我尝试过的: 显然,这是不正确的。 正确的语法是什么