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

Oracle 11g-仅将工作日插入表中的FOR循环?

东方富
2023-03-14
问题内容

我想将一些数据插入与下一年的日期相关的表中。我实际上只需要插入工作日。

 BEGIN
  FOR i IN 1..365 LOOP
  INSERT INTO MY_TABLE (ID, MY_DATE)
  VALUES (i, (to_date(sysdate,'DD-MON-YY')-1)+i);
  END LOOP;
 END;

我可以通过回退并删除周末的行来解决我的问题,但这似乎不太优雅-有人能想到一种方法来修改我的循环以便跳过周末吗?


问题答案:

您总是可以在插入行之前检查星期几(星期几的名称取决于您的NLS设置,因此这不是最可靠的解决方案)

 BEGIN
  FOR i IN 1..365 LOOP
    IF( to_char(sysdate-1+i,'fmDAY') NOT IN ('SATURDAY', 'SUNDAY') )
    THEN
      INSERT INTO MY_TABLE (ID, MY_DATE)
        VALUES (i, (to_date(sysdate,'DD-MON-YY')-1)+i);
    END IF;
  END LOOP;
 END;


 类似资料:
  • 问题内容: 我需要将周末插入只有工作日的表中,然后将最后一个已知值分配给周末值。我知道我将需要一个插入查询,尽管在VBA和SQL方面我还是很新。 到目前为止的代码: 我拥有的数据(从周五开始): 我需要的数据: 因为没有对或者,我需要抢前一天的值,并将其输入到新添加的周末日期(例如,2018年1月6日和2018年1月7日)与匹配的信息,以及(,,,)。 在此先感谢您提供的任何帮助/建议。我仍然很新

  • 这个方法的问题是它总是返回零。看起来没有使用它的参数。然而,如果我按照下面的方式来写,那么一切都运行得很好。有没有人知道为什么第一种方法不起作用?

  • 问题内容: 这是一个非常简单的for循环: 我知道它主要如何工作,但是我不明白最后的工作方式:如果我是对的,它应该加1,但是当它打印出时,它先打印0,然后再打印1。 为什么为什么不从1开始就因为?为什么仍然只打印出原始值而不是原始值? 问题答案: 一个循环的工作方式如下: 初始化完成(在您的情况下;仅执行一次) 条件检查(此处),如果条件为假,则退出循环 大括号内的代码已执行(根据您的情况) 更新

  • 问题内容: 当我使用量角器执行以下代码时,它可以工作。我将嵌套的json传递给for循环。由于for循环的异步工作,它将打印变量i的所有值并达到最后一个值,因此它始终访问最后一对用户名和密码。我该如何解决这个问题? 问题答案: 您需要牢记,不能将-loop与promises一起使用。一切都是异步的,所以 最终它会咬到你 ,这意味着它已经准备好了,但测试还没有。 根据您的示例,建议创建一个名为例如的

  • 问题内容: 我有一个循环,将一个列表的值设置为另一个列表的值,虽然我可以用当前代码实现此目的,但它只是将最后一组值附加到列表中。在我的设置中可能会导致该问题的原因是什么? 这是我的数据格式: 这是我的格式: 这是我的for循环功能: 这是控制台: 它错过了前两个循环的值,但是完美地捕获了数组中的第三个循环。 问题答案: 应该在语句之后循环外,否则您将覆盖每次迭代中添加到列表的值。

  • 我想在for循环中将列表写入csv文件,每次都在不同的列中。例如,第一次迭代生成一个list=[1,2,3,4,5],第二次迭代生成list=[1,2,3]。我想要输出。csv看起来像: 我得到了以下代码: 相反,输出看起来像这样: 上面所做的是继续编写第一列,并且在下一次迭代中不会更改为新列。如何让python这样做?