create or replace procedure product is
begin
select (SELECT SUM(QUALIFIED_AMOUNT)
FROM abc abcView1
WHERE abcView1.PRODUCT_ID = abcView2..PRODUCT_ID) INITIAL_QUALIFIED
from abcabcView2;
end;
PLS-00103: 出现符号 "SELECT"在需要下列之一时:
(-+modnotnullothers
avgcountcurrentexistsmaxminpriorsqlstddev
sumvarianceexecuteforall
但这样就是对的
create or replace procedure product is
begin
select QUALIFIED_AMOUNT
from abc;
end;
不清楚你需要实现什么功能。
首先,在存储过程中这样写没有太大意义,select出的值没有赋给变量。或者用select ...into,或者用一个游标。
其次,
select (SELECT SUM(QUALIFIED_AMOUNT)
FROM abc abcView1
WHERE abcView1.PRODUCT_ID = abcView2..PRODUCT_ID) INITIAL_QUALIFIED
from abc abcView2;
也有问题,
SELECT SUM(QUALIFIED_AMOUNT)
FROM abc abcView1
WHERE abcView1.PRODUCT_ID = abcView2.PRODUCT_ID
返回的值应该是number等类型,不是数据库对象,
则select number(非列名)
from table or view
一般是非法的。
可改写为:
create or replace procedure product
(pn_INITIAL_QUALIFIED OUT number) is
ln_INITIAL_QUALIFIED number
begin
select sum(abcView1.QUALIFIED_AMOUNT)
intoln_INITIAL_QUALIFIED
from abc abcView1,
abc abcView2
whereabcView1.PRODUCT_ID = abcView2.PRODUCT_ID;
pn_INITIAL_QUALIFIED :=ln_INITIAL_QUALIFIED;
end;