Sql 如何在Oracle中在循环中重复Select语句?

Sql 如何在Oracle中在循环中重复Select语句?,sql,oracle,loops,plsql,Sql,Oracle,Loops,Plsql,我读了很多关于在循环中重复Select语句的东西,但我遇到了一些困难,因为我至今还没有找到明确的东西。我想多次执行一些查询Select查询,就像在FOR循环中一样。谁能帮我举个例子吗 你所问问题的基本结构如下所示。 请提供更多有关更具体代码示例的信息 DECLARE l_output NUMBER; BEGIN FOR i IN 1..10 LOOP SELECT 1 INTO l_output FROM dual; DBMS_OUTPUT.PUT_LIN

我读了很多关于在循环中重复Select语句的东西,但我遇到了一些困难,因为我至今还没有找到明确的东西。我想多次执行一些查询Select查询,就像在FOR循环中一样。谁能帮我举个例子吗

你所问问题的基本结构如下所示。 请提供更多有关更具体代码示例的信息

DECLARE
  l_output NUMBER;
BEGIN
  FOR i IN 1..10 LOOP
    SELECT 1
    INTO l_output
    FROM dual;
    DBMS_OUTPUT.PUT_LINE('Result: ' || l_output);
  END LOOP;
END;
PS:如果需要在SQL*Plus中启用输出,则可能需要运行该命令 将服务器输出设置为ON

使现代化 要在另一个表中插入结果,请执行以下操作:

DECLARE
-- Store the SELECT query in a cursor
  CURSOR l_cur IS SELECT SYSDATE DT FROM DUAL;  
--Create a variable that will hold each result from the cursor
  l_cur_rec l_cur%ROWTYPE;
BEGIN
  -- Open the Cursor so that we may retrieve results
  OPEN l_cur;  
  LOOP
    -- Get a result from the SELECT query and store it in the variable
    FETCH l_cur INTO l_cur_rec;
    -- EXIT the loop if there are no more results
    EXIT WHEN l_cur%NOTFOUND;
    -- INSERT INTO another table that has the same structure as your results
    INSERT INTO a_table VALUES l_cur_rec;        
  END LOOP;
  -- Close the cursor to release the memory
  CLOSE l_cur;
END;
要创建结果视图,请参见以下示例:

CREATE VIEW scott.my_view AS 
  SELECT * FROM scott.emp;
要使用视图查看结果,请执行以下操作:

SELECT * FROM scott.my_view;

请举例说明你正在尝试做什么。这太模糊了。当涉及到关系数据库时,停止循环思考。换成成套思考。大多数时候,询问如何在SQL中执行循环的人实际上是在寻找连接。因此,您应该向我们展示一些样本数据以及该样本数据的预期输出。是的,我理解,正如我所说,我在这方面遇到了困难。这就是为什么我要一个小例子,因为我无法正确运行我找到的例子,就像下面给出答案的例子一样。如果你向我们展示一些样本数据和你想要的输出,而不是坚持写一个循环,那会更好。我很确定我们可以找到一个比循环更好的解决方案。谢谢,我想选择一个表中有列日期的行。我想在每次迭代中将日期设置为当前日期后一周,直到列日期大于今天。除此之外,我想不出有什么别的办法。你还有别的想法吗?谢谢你的回答。这几乎就是我想要实现的,但我在其他网站上也发现了这段代码,但这不起作用。你能给我一个有效的例子吗?很抱歉,请看我更新的回复。这是你需要的吗?是的,再次感谢,这很有效。最后一个问题,希望我没有打扰你。我希望通过select语句获得结构的输出,或者更好,我希望在数据库中创建一个视图,该视图将填充过程的结果。你能帮忙吗?我在回复中添加了一些代码,这能解决你的问题吗?非常感谢,你救了我一天: