使用循环的动态SQL查询
我有4张表tab_1、tab_2、tab_3和tab_4 如何使用一个动态查询获得所有4个表的计数使用循环的动态SQL查询,sql,oracle,dynamic,count,Sql,Oracle,Dynamic,Count,我有4张表tab_1、tab_2、tab_3和tab_4 如何使用一个动态查询获得所有4个表的计数 expected result: count of tab_1 = count of tab_2 = count of tab_3 = count of tab_4 = 提前感谢听起来您想运行四个独立的查询,而不是一个查询。听起来你是在描述 DECLARE TYPE tbl_list IS TABLE OF VARCHAR2(30); l_tables tbl_list := tb
expected result:
count of tab_1 =
count of tab_2 =
count of tab_3 =
count of tab_4 =
提前感谢听起来您想运行四个独立的查询,而不是一个查询。听起来你是在描述
DECLARE
TYPE tbl_list IS TABLE OF VARCHAR2(30);
l_tables tbl_list := tbl_list( 'table_1', 'table_2', 'table_3', 'table_4' );
l_cnt pls_integer;
BEGIN
FOR i IN 1 .. l_tables.count
LOOP
EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM ' || l_tables(i)
INTO l_cnt;
dbms_output.put_line( 'Count of ' || l_tables(i) || ' = ' || l_cnt );
END LOOP;
END;
请尝试:
SET SERVEROUTPUT ON
DECLARE
result1 NUMBER; result2 NUMBER; result3 NUMBER; result4 NUMBER;
BEGIN
select count(*) into result1 from tab_1;
select count(*) into result2 from tab_2;
select count(*) into result3 from tab_3;
select count(*) into result4 from tab_4;
DBMS_OUTPUT.PUT_LINE('count of tab_1=' || result1);
DBMS_OUTPUT.PUT_LINE('count of tab_2=' || result2);
DBMS_OUTPUT.PUT_LINE('count of tab_3=' || result3);
DBMS_OUTPUT.PUT_LINE('count of tab_4=' || result4);
END;
虽然我不明白你为什么想要这个,但你问,我们回答 要将这一切压缩到一个查询中,您可以尝试在dual的一个主查询中使用3个标量子查询 从选项卡1中选择Count作为CountOfTab1, 从选项卡2中选择Count作为选项卡的CountOfTab2, 从选项卡3中选择Count作为选项卡3的CountOfTab3, 从选项卡4中选择Count作为选项卡4的CountOfTab4 进入第1个国家, 第二个国家, 第三个国家, countOfTab4
从Dual中,您的主题讨论了使用循环,这意味着一系列查询。问题的文本询问如何编写单个查询。哪一个是正确的?一个单一的查询将变得相当复杂。嗨,贾斯汀,非常感谢你的回复。查询是单个的,而数据应该在循环中替换。它说tbl_list.count需要declared@user3663500-对不起,我打错了。修正了,贾斯汀,我有一个叫阿瑟尔纳里奥的人。你能帮我一下吗?我是TechDo,这个很好用。但问题是我不想写4个slect查询和4个dbms_输出。select查询需要是静态的,表名应该是动态的