Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 使用PL/SQL将数据从一个表导出到另一个表_Loops_For Loop_Plsql_Count - Fatal编程技术网

Loops 使用PL/SQL将数据从一个表导出到另一个表

Loops 使用PL/SQL将数据从一个表导出到另一个表,loops,for-loop,plsql,count,Loops,For Loop,Plsql,Count,我有两张桌子,分别叫桌子1和桌子2。 表2没有数据。它只有名为City和Count of University的栏目。 表1为: City University ------------------------- Istanbul ITU Istanbul Bogazici Uni Istanbul YTU Istanbul Koc Uni Ankara METU Ankara

我有两张桌子,分别叫桌子1和桌子2。 表2没有数据。它只有名为City和Count of University的栏目。 表1为:

 City           University
 -------------------------
 Istanbul          ITU
 Istanbul      Bogazici Uni
 Istanbul          YTU
 Istanbul        Koc Uni
 Ankara           METU
 Ankara        Hacettepe Uni
 Ankara         Baskent Uni
 Trabzon           KTU
我想使用PL/SQL将城市和大学数量从表1导出到表2。因此,表2如下所示:

  City              Count of University
  -------------------------------------
  Istanbul                 4
  Ankara                   3
  Trabzon                  1
我该怎么做?我知道我需要使用循环,但我不知道如何使用。 我想学习可用代码。

我认为您需要:

insert into table_2 SELECT City, count(1) total FROM table_1 group by City

这里不需要使用任何PLSQL。您可以使用一个简单的查询来实现这一点。为了说明这一点,下面的查询将生成表2的数据:

SELECT City, count(1) "Count of University" 
FROM table_1 
group by City;
第二部分是填充它,因此您可以使用下面的查询来填充它

insert into table_2 
SELECT City, 
count(1) total 
FROM table_1 
group by City
用于上述内容的PLSQL匿名块:

declare

begin

Insert into table_2 
SELECT City, 
      count(1)  
FROM table_1 
group by City;

commit;    

exception
when others then
dbms_output.put_line(sqlcode||'-'||sqlerrm);
end;

试试这样的东西,再往下读


您不需要plsql来实现这一点。Sql将足够插入表2选择城市,从表1中按城市计数*我知道这一点,我知道如何做到这一点。但是,我想学习PL/SQL,这是我导师的要求。我是实习生。让别人帮你做这件事并不是在学习……我知道这一点,我知道怎么做。但是,我想学习PL/SQL,这是我导师的要求。我是实习生,我知道这一点,我知道如何做到这一点。但是,我想学习PL/SQL,这是我导师的要求。我正在检查我的职位。总是让事情变得简单,而不是完成你的文章。这真的很简单,但我需要使用循环。对我来说更好。但是谢谢。亲爱的,您首先需要了解PL/SQL引擎是如何工作的。存储过程来得很晚。首先从简单的事情开始,然后建立你的基础,然后在这个主题上获得力量。你根本无法跳到顶端。当您可以用更简单的方式使用循环时,使用循环也不是一个好的实践。它增加了开销。@Raj_Te,正如他所提到的-他是实习生,试图学习pl/sql。所以我认为最好先从简单的事情开始。他还“需要使用循环”。不过,请随意提供批量收集的替代解决方案。那么,您认为对于实习生来说,使用游标是一个更好的开始。。。!!!我不认为他的导师会预料到上述情况。@Raj_Te,我的理解是——他的导师的要求是使用循环。。。不管怎样,让他自己决定吧。谢谢这个过程正常运行,但我看不到表2,我写了select*来自表2,但我只能看到列。我写下承诺;但这是不正确的。我怎样才能看到表2?@yilmazmanfurkan61调用像这样的过程begin copyTable;犯罪终止这应该作为脚本执行。然后从表2中选择*。还要确保表_1不是空的。
create or replace procedure copyTable is 
 cursor source_table is 
   select city,count(*) as total from table_1 group by city;
begin 
 for item in source_table loop
   insert into table_2(City,Count_of_University) values (item.city,item.total);
 end loop;
end;