存储过程错在哪里?

zengwujun 2004-12-09 10:27:00
下面的存储过程出现编译错误,请问错在哪里,谢谢。
CREATE PROCEDURE test_pro
(iBegin IN NUMBER,
iEnd IN NUMBER,
summoney OUT NUMBER)
AS BEGIN
SELECT summoney = SUM(DATAVALUE)
FROM BASICDATAAMR_TAB
WHERE rownum <= iEnd
minus
SELECT summoney = SUM(DATAVALUE)
FROM BASICDATAAMR_TAB
WHERE rownum <= iBegin
END
...全文
111 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
zengwujun 2004-12-09
  • 打赏
  • 举报
回复
要揭贴了,我的QQ:23607128,上海,等到11点半
zengwujun 2004-12-09
  • 打赏
  • 举报
回复
啊,我的minus 还真是错了呢,刚才验证了,只得到前iEnd之和.
zengwujun 2004-12-09
  • 打赏
  • 举报
回复
to:CodeMagic(ErrorDetector)

is 改 as可以了,多谢,呵呵
yown 2004-12-09
  • 打赏
  • 举报
回复
CREATE PROCEDURE test_pro
(iBegin IN NUMBER,
iEnd IN NUMBER,
summoney OUT NUMBER)
IS
i:number;
j:number;
BEGIN
....
END

你是两个变量相减,怎么用minus?

zengwujun 2004-12-09
  • 打赏
  • 举报
回复
SELECT SUM(DATAVALUE) FROM BASICDATAAMR_TAB
WHERE rownum <= 20
MINUS
SELECT SUM(DATAVALUE) FROM BASICDATAAMR_TAB
WHERE rownum <= 11

同样可以得到结果的
ORARichard 2004-12-09
  • 打赏
  • 举报
回复
那应该是这样的,先用minus取结果集,再用SUM取和
zengwujun 2004-12-09
  • 打赏
  • 举报
回复
to:CodeMagic(ErrorDetector)

你的过程有错误
ORARichard 2004-12-09
  • 打赏
  • 举报
回复
select sum(DATAVALUE) into summoney from (SELECT DATAVALUEFROM BASICDATAAMR_TAB
WHERE rownum <= iEnd
minus
SELECT DATAVALUE FROM BASICDATAAMR_TAB
WHERE rownum <= iBegin)
zengwujun 2004-12-09
  • 打赏
  • 举报
回复
minus不就是集合减的意思么
zengwujun 2004-12-09
  • 打赏
  • 举报
回复
想得到的结果是:
iBegin到iEnd行之间DATAVALUE的总量
ORARichard 2004-12-09
  • 打赏
  • 举报
回复
minus的用法你知道吗?你是想用minus还是"-"减号
CodeMagic 2004-12-09
  • 打赏
  • 举报
回复
CREATE PROCEDURE test_pro (iBegin IN NUMBER,iEnd IN NUMBER,summoney OUT NUMBER) is
i number;
j number;
BEGIN
SELECT SUM(DATAVALUE) into i FROM BASICDATAAMR_TAB WHERE rownum <= iEnd;
SELECT SUM(DATAVALUE) into j FROM BASICDATAAMR_TAB WHERE rownum <= iBegin;

summoney:=i-j;
END
zengwujun 2004-12-09
  • 打赏
  • 举报
回复
怎么执行并传递参数呢?
ORARichard 2004-12-09
  • 打赏
  • 举报
回复
SELECT summoney = SUM(DATAVALUE)
FROM BASICDATAAMR_TAB
WHERE rownum <= iEnd
minus
SELECT summoney = SUM(DATAVALUE)
FROM BASICDATAAMR_TAB
WHERE rownum <= iBegin
------------------------------
楼主这段代码想得到什么结果,我觉得在SQLPLUS中执行都不会得到你想要的
chao778899 2004-12-09
  • 打赏
  • 举报
回复
你所用的语法是SQL SERVER里边的,在ORACLE里边给变量赋值只能用SELECT COL1 INTO BIANLIANG1
这种语句
zengwujun 2004-12-09
  • 打赏
  • 举报
回复
楼上的,你的编译通过了,那我的过程错在哪里,为什么要这样做?

谢谢回答
bzszp 2004-12-09
  • 打赏
  • 举报
回复
try:

CREATE PROCEDURE test_pro
(iBegin IN NUMBER,
iEnd IN NUMBER,
summoney OUT NUMBER)
AS
num1 number;
num2 number;
BEGIN
SELECT SUM(DATAVALUE) into num1
FROM BASICDATAAMR_TAB
WHERE rownum <= iEnd;

SELECT SUM(DATAVALUE) into num2
FROM BASICDATAAMR_TAB
WHERE rownum <= iBegin;

summoney :=num1-num2;
END;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧