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函数排序,就可以依次取出。

  • 相关阅读:
    Linux内核使用的GNUC扩展
    linux常用命令--开发调试篇
    代码示例_poll的多路复用
    硬件_红外传感器
    硬件_霍尔感应器
    全志_功能引脚配置_sys_config.fex
    知识_嵌入式常用词汇
    代码示例_Input 按键驱动
    Vmware_安装_tools
    Ubunt_配置_start
  • 原文地址:https://www.cnblogs.com/La5DotNet/p/4350553.html
Copyright © 2011-2022 走看看