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

  • 相关阅读:
    Servlet中request乱码问题解决
    java对cookie的操作
    EL表达式
    MYSQL安装以及卸载 -- WINDOWS
    java接口
    HttpClient配置及运用(二)
    JVM的内存空间
    孤寂的欢愉
    论神性与人性
    使用NPOI读取Excel出错
  • 原文地址:https://www.cnblogs.com/La5DotNet/p/4350553.html
Copyright © 2011-2022 走看看