各位,谁知道这个存储过程怎莫错了

[复制链接]
查看11 | 回复2 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
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;
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
不清楚你需要实现什么功能。
首先,在存储过程中这样写没有太大意义,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;
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
select (SELECT SUM(QUALIFIED_AMOUNT)

FROM abc abcView1

WHERE abcView1.PRODUCT_ID = abcView2..PRODUCT_ID) INITIAL_QUALIFIED
from abcabcView2;
end;
如果上面的程序是你拷贝下来的话
至少abcView2..PRODUCT_ID多了一个点号
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行