oracle报错ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'P

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle报错ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'P相关的知识,希望对你有一定的参考价值。

我的code:CREATE OR REPLACE PROCEDURE promo_ship_sp
(date_cutoff date,
month bb_promolist.month%TYPE,
year bb_promolist.year%TYPE,
shopperid OUT bb_basket.idshopper%TYPE,
promo bb_promolist.promo_FLAG%TYPE,
use bb_promolist.used%TYPE := 'N')
IS
BEGIN
SELECT idshopper INTO shopperid
FROM bb_basket
where dtcreated = date_cutoff;
INSERT INTO bb_promolist(idshopper, month, year,promo_flag,used)
VALUES(shopperid, month, year, 1,'Y');
END;
调用exec promo_ship_sp('15-feb-07','apr',2007, shopperid=>:id)
报错BEGIN promo_ship_sp('15-feb-07','apr',2007, shopperid=>:id); END;

*

ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'PROMO_SHIP_SP'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

救救急~~~麻烦各位了~~~我调了一早上也没弄明白为啥~
对了,还有哦,为什么select into的那个变量一定要是out类型,不然就报错~~~

可以用Oracle DBA神器,PRM-DUL灾难恢复工具,Schema级别数据恢复。PRM-DULFor Oracle Database , schema级别oracle数据库数据恢复特性 ,PRM,DUL即ParnassusData Recovery Manager是企业级别Oracle数据库灾难恢复工具。PRM可以在无备份的情况下恢复被truncated掉的表,也可以恢复无法打开的Oracle数据库Alter Database Open失败中的数据。

    ORA-01650:unable to extend rollback segment NAME by NUM intablespace NAME错误的产生原因,上述ORACLE错误为回滚段表空间不足引起的,这ORACLE数据管理员最常见的ORACLE错误信息,当用户在做一个非常庞大的数据操作导致现有回滚段的不足,使可分配用的回滚段表空间已满,无法再进行分配,就会出现上述的错误。

    解决方法:使用“ALTER TABLESPACE tablespace_name ADD DATAFILE filename SIZE size_of_file”命令向指定的数据增加表空间,根据具体的情况可以增加一个或多个表空间。

    当然这与还与你主机上的裸盘设备有关,如果你主机的裸盘设备已经没有多余的使用空间,建议你不要轻意的增加回滚段表空间的大小,可使用下列的语句先查询一下剩余的tablespace空间有多少,Select user_name,sql_text from V$open_cursorwhere user_name=‘’,如果多余的空间比较多,就可以适当追加一个大的回滚段给表空间使用,从而避免上述的错误。

    你也可以用以下语句来检测一下rollback segment的竞争状况,如果任何一个classcount/sumvalue大于1%,就应该考虑增加rollback segment.ORA-01652。

    unable to extend temp segment by num in tablespace name错误产生的具体原因ORACLE临时段表空间不足,因为ORACLE总是尽量分配连续空间,一但没有足够的可分配空间或者分配不连续就会出现上述的现象。

    解决方法:我们知道由于ORACLE将表空间作为逻辑结构-单元,而表空间的物理结构是数据文件,数据文件在磁盘上物理地创建,表空间的所有对象也存在于磁盘上,为了给表空间增加空间,就必须增加数据文件。

参考技术A 参数个数不对,
promo这个参数也要传入,或者设上缺省值
shopperid=>:id这个不能这样写,定义一个未知变量,放这里
select into当然是未知的了,shopperid=>:id是传入了一个值。本回答被提问者和网友采纳

oracle 关闭之后启动报错ora-00205,怎么解决?

shutdown 时报错ora-01507
startup 时报错ora-00205,
怎么解决?

oracle 关闭之后启动报错ora-00205是设置错误造成的,解决方法为:

1、工作中遇到在启动数据库实例的时候报错ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance。

2、先用静态参数文件pfile启动数据库,发现使用静态参数文件启动时没有报错。

3、利用静态参数文件重建动态参数文件spfile并重启数据库,发现问题已经解决,不再有失效参数错误。

4、查看警报日志 alert_bianxueqing.log  下面是警报的位置。

5、打开文件把文件中的log_archive_start      把这一行直接删除  然后再重启动就可以了。

参考技术A ORA-00205: error in identifying control file, check alert log for more info
翻译为:控制文件的错误,请检查警报日志中获得更多信息

通过:/opt/Oracle/diag/rdbms/ora11g/ora11g/alert/log.xml文件中找出实例启动日志
里面会有如下信息:
<msg time='2011-11-10T09:55:51.643+08:00' org_id='oracle' comp_id='rdbms'
client_id='' type='UNKNOWN' level='16'
module='MMON_SLAVE' pid='13970'>
<txt>Errors in file /opt/oracle/diag/rdbms/ora11g/ora11g/trace/ora11g_m000_13970.trc:
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/opt/oracle/oradata/ora11g/control03.ctl'
ORA-27048: skgfifi: file header information is invalid
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/opt/oracle/oradata/ora11g/control02.ctl'
ORA-27048: skgfifi: file header information is invalid
</txt>
</msg>
里面有提示control02.ctl与control03.ctl两个控制文件错误
再找到/opt/oracle/diag/rdbms/ora11g/ora11g/trace/ora11g_m000_13970.trc跟踪文件
里面有如下信息:
kcidr_process_controlfile_error:
IO Check was called but no error was found
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/opt/oracle/oradata/ora11g/control03.ctl'
ORA-27048: skgfifi: file header information is invalid
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/opt/oracle/oradata/ora11g/control02.ctl'
ORA-27048: skgfifi: file header information is invalid
里面提示无法正常打开两个控制文件。

针对如上信息,可能是由于数据库的非正常关闭而导致控制文件被损坏。
可选择如下两种修改方式:
1、直接拷贝control01.ctl文件进行覆盖control02.ctl与control03.ctl文件
2、从其它正常的oracle环境中拷贝控制文件进行覆盖。

实例装载之后可通过“show parameter spfile;”查询出oracle加载的参数文件,我这里是spfileora11g.ora。
实例正常启动后,可通过“select * from v$controlfile;”查询这个视图,这里面的控制文件均与spfileora11g.ora中配置的控制文件内容一致。
参考技术B 有个类似的问题,自己查查,可能是磁盘的问题  
启动系统时会自启动数据库alert.log文件,看看具体是什么问题
alert.log 在 ORACLE_BASE/admin/orcl/bdump/alert_orcl.log
(注意,ORACLE_SID是ORCL,应根据实际的ORACLE_SID进行修改)
查看文件末尾的错误追问

没有alert_orcl.log文件

追答

orcl 是ORACLE缺省的实例名,没有alert_orcl.log文件,你的实例名肯定不是orcl,找到alert_xxx.log文件即可,xxx是你的oracle实例名

追问

我的是用默认的orcl

追答

你是哪个版本,看看有没有其他的日志文件,可能名称不同。
新版本日志可能是xml文件的,但可能在alert目录下,如启动日志为log.xml
ORA-00205: error in identifying control file, check alert log for more info

一般错误是控制文件错误,必须查清log看具体是什么错误

参考技术C CONTROL01.CTL和CONTROL02.CTL两个控制文件不一致或丢失其中一个导致。
解决方案:
1.不一致的话,先备份两个文件,然后复制其中一个,改名后替换另外一个
2.丢失其中一个的话,直接复制改名就行了
3.两个都丢失...麻烦了点,得看具体问题

以上是关于oracle报错ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'P的主要内容,如果未能解决你的问题,请参考以下文章

Oracle常见错误:ORA-06550ORA-00911ORA-02085

ORA-06550 和 PLS-00103

使用 Dapper 执行 Oracle 包的功能

ORA-06550:第 1 行,第 13 列:PLS-00382:表达式类型错误 ORA-06550:第 1 行,第 7 列:PL/SQL:语句被忽略

ORA-06550,PLS-00306;向 Oracle 过程插入数据时出错

myBatis 调用 Oracle 存储过程,报错,求解答