有参数就直接写上值,但要注意out参数的用法,只可用变量代替代.
解决方案 »
- 求SQL 脚本
- 存储过程中,游标遍历到最后一行记录,报错oracle ORA-06502 PL/SQL:数字或值错误
- 急,求助DECODE语句的多值判断,请高手指点!
- 游标怎么使用啊?不太会。
- 在线等,急
- oracle9i+solaris9下编译C报wrong ELF class: ELFCLASS64 错
- ***<原创>***oracle数据库转换到Sqlserver的几点经验
- ORACLE 9i的意义?
- oracle数据库排序,(一开始以为简单,可是在web板块发帖没有解决),请大家指教,本人揭帖一向迅速!
- 新手问在ORACLE8I新建了个用户在下面建了表用其它的用户访问不了
- oracle害死人了,感觉自己水平真是太差了
- 请问在oracle中一个SQL执行后怎么判断是否成功?
我调用如下:1、exec GETZRCLIST('3601210101');错误如下:
错误位于第1行:
ORA-06550: 行1、列7:
PLS-00306: 调用'GETZRCLIST'时自变量数量或类型错误
ORA-06550: 行1、列7:
PL/SQL: Statement ignored2、exec GETZRCLIST(3601210101);错误位于第1行:
ORA-06550: 行1、列7:
PLS-00306: 调用'GETZRCLIST'时自变量数量或类型错误
ORA-06550: 行1、列7:
PL/SQL: Statement ignored3、exec GETZRCLIST("3601210101");错误位于第1行:
ORA-06550: 行1、列18:
PLS-00201: 必须说明标识符'3601210101'
ORA-06550: 行1、列7:
PL/SQL: Statement ignored到底应该怎么调用,下面是我的存储过程。CREATE OR REPLACE PROCEDURE GETZRCLIST
(p_TYBM in varchar2,p_CURSOR OUT comm_types.comm_cursor) is
temp_str varchar2(10);
temp_nf number;
temp_number number;begin
temp_str := p_TYBM;
-- temp_nf := p_NF;
temp_number := to_number(temp_str); --CDC
open p_CURSOR for
SELECT * from T_ZRCXX where (TYBM_ID = temp_str) order by zlcbm;
end GETZRCLIST; -- TYBM_ID 是varchar2类型的。
/
var p_cursor ref cursor
/
exec GETZRCLIST(:p_TYBM ,:p_cursor );
print p_cursor
print p_TYBM
var p_TYBM varchar2
/
var p_cursor ref cursor
/
begin
:p_TYBM:='123456';
GETZRCLIST(:p_TYBM ,:p_cursor );
end;
/
print p_cursor
懂了么?
执行到第二句话
/
的时候系统就报错了。GETZRCLIST('3601210101');
*
错误位于第2行:
ORA-06550: 行2、列1:
PLS-00306: 调用'GETZRCLIST'时自变量数量或类型错误
ORA-06550: 行2、列1:
PL/SQL: Statement ignored
/
系统报错:缓冲区中无可运行的程序当我运行 var p_cursor ref cursor会报错:
使用:VAR[IABLE] [ variable [ NUMBER | CHAR | CHAR (n) | VARCHAR2 (n) |
NCHAR | NCHAR (n) | NVARCHAR2 (n) |
CLOB | NCLOB | REFCURSOR ] ]当我运行:print p_cursor
系统报错:未说明结合变量"P_CURSOR"不行啊。麻烦你亲自运行一下 ok?
set serveroutput on
declare
rc comm_types.comm_cursor;
begin
exec GETZRCLIST('3601210101',rc);
for v_rc in rc loop
dbms_output.put_line(v_rc.col1,....);
end loop;
end;
/
ORA-06550: 行4、列6:
PLS-00103: 出现符号"GETZRCLIST_BAK"在需要下列之一时:
:=.(@%;
符号":="被替换为"GETZRCLIST_BAK"后继续。
ORA-06550: 行6、列32:
PLS-00103: 出现符号"."在需要下列之一时:
(-+modnotnullothers
<an identifier><a double-quoted delimited-identifier>
<a bind variable>avgcountcurrentexistsmaxminpriorsqlstddev
sumvariancecast
<a string literal with character set楼上,还是不行啊。
AS
TYPE comm_cursor IS REF CURSOR;
END comm_types;
/创建后重新查看是否失效,若是就重新再创建,然后再执行以上语句.
CREATE OR REPLACE PROCEDURE GETZRCLIST
(p_TYBM in varchar2,p_CURSOR OUT comm_types.comm_cursor) is
...
1.应该有一个包comm_types中定义了comm_cursor 为 cursor 类型;2.你的存储过程明明是两个参数你只给一个,所以提示:
ORA-06550: 行2、列1:
PLS-00306: 调用'GETZRCLIST'时自变量数量或类型错误
ORA-06550: 行2、列1:
PL/SQL: Statement ignored
3.在sql plus中执行时,要先定义两个变量(定义变量):
sql>set serveroutput on
declare
p_TYBM varchar2
p_cursor comm_types.comm_cursor;
begin
exec GETZRCLIST('3601210101',rc);
for v_rc in rc loop
dbms_output.put_line(v_rc.col1,....);
end loop;
end;
ORA-06550: 行3、列1:
PLS-00103: 出现符号"P_CURSOR"在需要下列之一时:
:=.(@%;notnullrange
renamesdefaultcharacter
符号";"被替换为"P_CURSOR"后继续。
ORA-06550: 行5、列6:
PLS-00103: 出现符号"GETZRCLIST_BAK"在需要下列之一时:
:=.(@%;
符号":="被替换为"GETZRCLIST_BAK"后继续。
ORA-06550: 行7、列32:
PLS-00103: 出现符号"."在需要下列之一时:
(-+modnotnullothers
<an identifier><a double-quoted delimited-identifier>
<a bind variable>avgcountcurrentexistsmaxminpriorsqlstddev
sumvariancecast
<a string literal with character set
declare
p_TYBM varchar2;
p_cursor ref cursor;
begin
GETZRCLIST(:p_TYBM ,:p_cursor );
dbms_output.put_line(p_TYBM );
end;