SQL Server循环插入

一个SQL循环插入的代码,运行正常:

 BEGIN
  DECLARE @idx AS INT;
  DECLARE @NodeName nvarchar(255);
  DECLARE @OtherName nvarchar(255);
   DECLARE @ParentId INT;
   DECLARE @OrderId Int;
   DECLARE @Url nvarchar(255);
   DECLARE @NodeClass nvarchar(255);

   DECLARE @myTable TABLE (NodeName nvarchar(255),OtherName nvarchar(255), ParentId INT,OrderId Int,Url nvarchar(255),NodeClass nvarchar(255));
INSERT INTO @myTable
     select NodeName,OtherName,ParentId,OrderId,Url,NodeClass from SysMenu where OtherName = ‘超级管理员‘;

 declare @count int select @count=count(*) from @myTable

  set @idx=1;
  WHILE @idx <= @count
   BEGIN
     select
     @NodeName=NodeName,
     @OtherName=OtherName,
     @ParentId=ParentId,
     @OrderId=OrderId,
     @Url=Url,
     @NodeClass=NodeClass
     from (select row_number() over( order by OrderId)num,* from @myTable) a where [email protected];
   INSERT INTO SysMenu (NodeName,OtherName,ParentId,OrderId,Url,NodeClass)
    values(@NodeName,‘销售设计渠道‘,@ParentId,-1,@Url,@NodeClass);
     SET @idx = @idx + 1;
   END 

  End

总体思路:

1、建立一个临时表MyTable,将需要循环插入的数据插入到里面。

2、声明一个变量,记录数据总量:declare @count int select @count=count(*) from @myTable 。

3、用Wihle循环插入。

问题:如何取临时表MyTable中的每一条数据?

解:参照代码,使用rownumber函数排序,就可以依次取出。

时间: 2024-10-11 23:31:43

SQL Server循环插入的相关文章

SQL Server 批量插入数据的两种方法(转)

在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍SQL Server支持的两种批量数据插入方法:Bulk和表值参数(Table-Valued Parameters). 运行下面的脚本,建立测试数据库和表值参数. [c-sharp] view plaincopy --Create DataBase create database BulkTestDB; go use BulkTes

SQL Server 批量插入数据的两种方法

在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍SQL Server支持的两种批量数据插入方法:Bulk和表值参数(Table-Valued Parameters). 运行下面的脚本,建立测试数据库和表值参数. [c-sharp] view plaincopy --Create DataBase create database BulkTestDB; go use BulkTes

SQL Server 2008 插入修改图片信息

在SQL Server 2008中我们可以用varbinary(max) 数据类型来保存一张图片,不过它的播入与修改与别的数据还是有一点点不同的. 下面看例子: 1.定义表:create table T_Image(ID int not null, BmpImage varbinary(max) not null) 2.向表中插入数据: insert into T_Image(ID,BmpImage) select 1,bulkcolumn --bulkcolumn这个关键字要记下来  大数据列

ASP.NET MVC与Sql Server交互, 插入数据

在"ASP.NET MVC与Sql Server建立连接"中,与Sql Server建立了连接.本篇实践向Sql Server中插入数据. 在数据库帮助类中增加插入数据的方法. public class SqlDB { protected SqlConnection conn; //打开连接 public bool OpenConnection() { conn = new SqlConnection(ConfigurationManager.ConnectionStrings[&qu

Sql Server 循环语句插入

有个表tt 描述为: q (PK,int,not null) w (nchar(10),not null) e (int,not null) r (int,not null) t (int,not null) y (int,not null) u (int,not null) i (int,not null) o (int,not null) p (int,not null) 循环插入语句为: declare @a int set @a=1 while @a<10001 begin insert

Sql Server海量数据插入

目录 1.前言 2.BULK INSERT 3.简单示例 前言 由于昨天接到一个客户反馈导出数据卡死的问题,于是决定今天模拟一下千万级的数据,然后傻傻的等待插入数据了半天...... 对于海量数据,上百万上千万的数据插入,我们用ADO.NET提供的普通一条一条数据插入非常非常慢,好在Sql Server为我们提供了批量插入方法. BULK INSERT 语法 主要参数说明 database_name 指定的表或视图所在的数据库的名称,如果未指定,则默认为当前数据库. schema_name 表或

SQL Server返回插入数据的ID和受影响的行数

首先看看数据库里面的数据(S_Id为自增长标识列): sql server 中返回上一次插入数据的ID(标识值)有三种方式: 第一种 @@IDENTITY: 1 insert into Student(S_StuNo,S_Name,S_Sex,S_Height) 2 values('013','卫庄','男','185'); 3 4 select @@IDENTITY -- 返回 17 @@IDENTITY可以返回当前连接所有范围内插入最后所生成的标识值(包括任何调用的存储过程和触发器).这个函

如何向SQL SERVER 2008 插入图片数据

最近在弄数据库,涉及到插入图片,但2008里已经不在支持TEXTCOPY, 需要用到openrowset.实际上个人认为这个更好用.以下从别处copy的例子 UPDATE and OPENROWSET can be used together to import an image into a table. OPENROWSET can be used to import a file into a single row, single column value. OPENROWSET ( BU

SQL Server 批量插入数据的方法

运行下面的脚本,建立测试数据库和表. --Create DataBase create database BulkTestDB; go use BulkTestDB; go --Create Table Create table BulkTestTable ( Id int primary key, UserName nvarchar(32), Pwd varchar(16) ) go --Create Table Valued CREATE TYPE BulkUdt AS TABLE ( Id