ORACLE 存储过程报错 PLS-00103 求查错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORACLE 存储过程报错 PLS-00103 求查错相关的知识,希望对你有一定的参考价值。
其中username ,counter ,rolename 是传入参数,传入参数不能赋值,即第7、8行语句有问题,建议删除。
建议在plsql工具中编辑,方便。
扩展资料
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。
参考资料
百度百科-存储过程
参考技术A (username varchar2,counter int,rolename varchar2) 写法,认为三个参数都 in 类型。in 类型参数是不能赋值的。例如:rolename:='connect,resource'; username:='test';写法是错误的。写成(username in out varchar2,counter int,rolename in out varchar2)这样,允许赋值。追问
更改之后还是不行 错误还是一样的
追答参数(username varchar2,counter int,rolename varchar2)不要动,
把两个赋值语句rolename:='connect,resource'; username:='test'注释掉。
用 begin my_guant_role('test',10,'connect,resource'); end;
2、根据报错,应该是语法格式的问题。在应该要求以下关键词时(begin function),出现了''''符号;
3、建议在plsql工具中编辑,方便。 参考技术C 楼上正解!
在 Oracle 下创建存储过程时出错 - PLS-00103
【中文标题】在 Oracle 下创建存储过程时出错 - PLS-00103【英文标题】:Error on creating stored procedure under Oracle - PLS-00103 【发布时间】:2012-07-31 16:00:05 【问题描述】:我正在尝试创建一个多次调用另一个的存储过程。这是通过为每个循环使用一个来完成的。所有开发均在oracle sql developer Version 3.0.04下进行。
CREATE OR REPLACE PROCEDURE Z_INBILLABILITYSERV
IS BEGIN
DECLARE
ano VARCHAR2(4);
BEGIN
select EXTRACT(YEAR FROM sysdate) into ano from dual;
FOR dat IN (SELECT * FROM Z_FECHOMES WHERE MES <=
(select EXTRACT(MONTH FROM sysdate) from dual )and ANO = ano)
LOOP
call z_insertbillability(dat.periodo_inicio,dat.periodo_fim,
dat.ano,dat.mes);
END LOOP;
END;
END;
我遇到以下错误:
错误(9,12):PLS-00103:在预期以下情况之一时遇到符号“Z_INSERTBILLABILITY”::=。 ( @ % ; 符号 ":=" 被替换为 "Z_INSERTBILLABILITY" 以继续。
如果有人有想法或提示,我现在会很高兴并且非常感激。
【问题讨论】:
【参考方案1】:你不需要call
这个词;做吧:
LOOP
z_insertbillability(dat.periodo_inicio,dat.periodo_fim,
dat.ano,dat.mes);
END LOOP;
错误消息可能有点无用,但它试图显示它可以尝试解释单词call
的所有方式,因为它不会将其识别为关键字。并显示接下来会看到的内容:作为变量名(后面是 :=
用于赋值;或模式名称(后面是 .
);或函数/过程名称(后面是(
参数列表)等。
【讨论】:
非常感谢。你能解释一下为什么不需要这个电话吗?在我看到的所有示例中,总是有 call 或 exec 这个词,到目前为止我对此没有任何问题。call
用于 JDBC 调用(可能还有其他); exec
用于 SQL*Plus。两者都表明您想要执行一些 PL/SQL 代码。一旦你进入了一个 PL/SQL 块,你就不需要再指出了。
好的,这是一个“外部资源”。非常感谢亚历克斯。祝你好运。以上是关于ORACLE 存储过程报错 PLS-00103 求查错的主要内容,如果未能解决你的问题,请参考以下文章
无法使用varchar 2-pls-00103类型创建存储过程