Sql 如果是计数(列),则在Oracle中选择
我可以在oracle中执行类似的操作吗? 我想检查结果数据集是否超过20k条记录,然后不选择,如果少于20k,则选择Sql 如果是计数(列),则在Oracle中选择,sql,oracle,if-statement,Sql,Oracle,If Statement,我可以在oracle中执行类似的操作吗? 我想检查结果数据集是否超过20k条记录,然后不选择,如果少于20k,则选择 DECLARE cnt number; BEGIN select count(*) into cnt from ir_mpn where material LIKE '%A00%'; IF cnt > 20000 THEN select manuf_part, material, vendor, vendor_name from ir_mpn where materi
DECLARE cnt number;
BEGIN
select count(*) into cnt from ir_mpn where material LIKE '%A00%';
IF cnt > 20000 THEN
select manuf_part, material, vendor, vendor_name from ir_mpn where material LIKE '%A00%';
END IF;
END;
我尝试这样做,但显示错误:
ORA-06550: line 6, column 4:
PLS-00428: an INTO clause is expected in this SELECT statement
有更好的建议吗?这是PL/SQL,因此您的
SELECT
语句需要一个INTO
子句。当您将要返回数千行时,您不能将它们返回到标量变量中,而是返回到集合或引用游标中
但是,如果您想在SQL中执行此操作,请查看此操作是否有帮助;示例基于Scott的DEPT
表:
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------------- --------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
如果行数小于3,我想从中选择行;由于行数为4,因此不返回任何内容:
SQL> select * from dept
2 where 3 >= (select count(*) from dept);
no rows selected
五排怎么样
SQL> select * from dept
2 where 5 >= (select count(*) from dept);
DEPTNO DNAME LOC
---------- -------------------- --------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL>
就你而言:
select manuf_part, material, vendor, vendor_name
from ir_mpn
where material LIKE '%A00%'
and 20000 >= (select count(*)
from ir_mpn
where material like '%A00%'
);
对。这取决于你想要实现什么 在PL/SQL中,不能使用纯
SELECT
返回行。
有些选项是使用进入
(就像您对COUNT()
所做的那样)或使用游标(如下所示)
简单的方法是:
for r_material in (select manuf_part, material, vendor, vendor_name from ir_mpn where material LIKE '%A00%') loop
-- process each r_material record here f.e.
-- if r_material.vendor = 'ORACLE' then...
end loop;
非常感谢你!!但这只适用于简单的直接查询。如果使用连接进行长查询,则需要时间。当然需要。没有免费的午餐。或者换句话说,当查询读取并处理了20k条记录时,我可以在Oracle中终止查询吗?最简单的选择是
选择。。。从ir\u mpn那里。。。rownum只是为了澄清一下,如果匹配行少于20001行,您是否希望不返回任何内容,并将结果总数限制为20K?所以如果有15K行,什么也不显示,如果有25K行,显示20K?明白了。非常感谢你!