一个oracle的存储过程,如何调用成功?
过程定义如下:
CREATE OR REPLACE PROCEDURE "KBMANAGER"."COUNT_NUM" (in_sex
in persons.sex%type, out_num out NUMBER)
as
begin
if in_sex = 'm' then
select count(sex) into out_num
from persons
where sex='m';
else
select count(sex) into out_num
from persons
where sex='w';
end if;
end COUNT_NUM;
编译已通过。
我在调用时总提示我没有声明变量,不知道错哪里?
SQL>variable man_num number;
SQL>exec count_num('m',man_num);
SQL>print man_num;
SQL>/
提示如下:
BEGIN count_num('m',man_num); END;
*
ERROR 位于第 1 行:
ORA-06550: 第 1 行, 第 21 列:
PLS-00201: 必须说明标识符 'MAN_NUM'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
MAN_NUM
----------
如何调用才能成功?
问题点数:20、回复次数:13Top
1 楼gsoft(xiaoxiao)回复于 2004-12-03 13:00:51 得分 0
我调用之前都已经有
varialble man_num number;了
怎么还说没有说明呢? PLS-00201: 必须说明标识符 'MAN_NUM'Top
2 楼gsoft(xiaoxiao)回复于 2004-12-03 13:01:27 得分 0
来帮忙呀啊Top
3 楼gsoft(xiaoxiao)回复于 2004-12-03 13:02:17 得分 0
帮忙Top
4 楼GerryYang(轻尘)回复于 2004-12-03 13:13:40 得分 0
declare
man_num number;
begin
exec count_num('m',man_num);
end;
/
Top
5 楼qiaozhiwei(乔)回复于 2004-12-03 13:21:09 得分 0
试试这个:
DECLARE
out_num out NUMBER;
BEGIN
-- Now call the stored program
count_num('m',out_num);
-- Output the results
dbms_output.put_line(SubStr('out_num = '||to_char(out_num),1,255));
COMMIT;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM);
RAISE;
END;Top
6 楼gsoft(xiaoxiao)回复于 2004-12-03 13:24:19 得分 0
TO : GerryYang(轻尘)
declare
man_num number;
begin
exec count_num('m',man_num);
end;
提示如下:
exec count_num('m',man_num);
*
ERROR 位于第 4 行:
ORA-06550: 第 4 行, 第 6 列:
PLS-00103: 出现符号 "COUNT_NUM"在需要下列之一时:
:=.(@%;
符号 ":=" 被替换为 "COUNT_NUM" 后继续。
Top
7 楼gsoft(xiaoxiao)回复于 2004-12-03 13:27:20 得分 0
TO : qiaozhiwei(乔)
还是不行呀
SQL> DECLARE
2 out_num out NUMBER;
3 BEGIN
4
5 -- Now call the stored program
6 count_num('m',out_num);
7
8 -- Output the results
9 dbms_output.put_line(SubStr('out_num = '||to_char(out_num),1,255));
10
11 COMMIT;
12 EXCEPTION
13 WHEN OTHERS THEN
14 dbms_output.put_line('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM);
15 RAISE;
16 END;
17 /
out_num out NUMBER;
*
ERROR 位于第 2 行:
ORA-06550: 第 2 行, 第 13 列:
PLS-00103: 出现符号 "NUMBER"在需要下列之一时:
:=.(@%;notnullrange
defaultcharacter
符号 ":=" 被替换为 "NUMBER" 后继续。
Top
8 楼nbnasom(阿飞)回复于 2004-12-03 13:32:39 得分 5
set serverout on
declare
man_num number;
begin
count_num('m',man_num);
dbms_output.put_line('out_num = '||to_char(out_num))
end;
Top
9 楼CodeMagic(ErrorDetector)回复于 2004-12-03 13:39:19 得分 5
我在调用时总提示我没有声明变量,不知道错哪里?
SQL>variable man_num number;
SQL>exec count_num('m',man_num);
SQL>print man_num;
SQL>/
提示如下:
BEGIN count_num('m',man_num); END;
*
ERROR 位于第 1 行:
ORA-06550: 第 1 行, 第 21 列:
PLS-00201: 必须说明标识符 'MAN_NUM'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
MAN_NUM
----------
如何调用才能成功?
=====================================
exec count_num('m',:man_num);Top
10 楼qiaozhiwei(乔)回复于 2004-12-03 13:47:28 得分 5
DECLARE
out_num NUMBER;
BEGIN
-- Now call the stored program
test('m',out_num);
-- Output the results
dbms_output.put_line('out_num = '||TO_CHAR(out_num));
COMMIT;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM);
RAISE;
END;
/
Top
11 楼qiaozhiwei(乔)回复于 2004-12-03 13:48:21 得分 0
我测了一下,应该可以,前一个是定义写错了,不好意思,你试下再Top
12 楼ORARichard(没钱的日子......)回复于 2004-12-03 13:52:11 得分 5
declare
man_num number;
begin
count_num('m',man_num);
end;
/
Top
13 楼gsoft(xiaoxiao)回复于 2004-12-03 14:51:29 得分 0
谢谢大家搞定了,你们真厉害,结了Top




