zoukankan      html  css  js  c++  java
  • 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 num=@idx;
       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函数排序,就可以依次取出。

  • 相关阅读:
    Mac 生成public_key
    OmniGraffler软件和激活码
    Maven将本地项目打包后引入本地另一个项目
    spring boot 项目启动无法访问,排查
    服务端推送
    使用IDEA进行commit合并(折叠)
    将map转为Object,支持 Date/Boolean
    mysql 删除同样记录只保留一条
    Springboot文件上传限制
    Springboot 上传文件
  • 原文地址:https://www.cnblogs.com/La5DotNet/p/4350553.html
Copyright © 2011-2022 走看看