oracle中pls-00103,PLS-00103 Oracle存储过程错误

存储过程声明的框架是

CREATE OR REPLACE PROCEDURE procedure_name( <> )

AS

<>

BEGIN

<>

END procedure_name;

在您发布的代码中,

您在变量声明之前放置 BEGIN

你有一个无关的 DECLARE - 如果你声明一个不涉及 CREATE 的PL / SQL块,你只会使用它 .

在 RETURN 语句后缺少分号 .

过程无法返回值 . 如果要返回1或0,您可能需要一个函数,而不是一个过程 . 如果需要过程,可以声明 OUT 参数 .

在 IF 之后您缺少 THEN

这听起来像你想要的东西

CREATE OR REPLACE FUNCTION LIST_ACTIONS_CHECK_ADD

(

LISTNAME IN VARCHAR2

)

RETURN NUMBER

AS

CNT NUMBER;

BEGIN

SELECT COUNT(LIST_NAME)

INTO CNT

FROM LISTS_MASTER

WHERE LIST_NAME = LISTNAME;

IF (CNT > 0)

THEN

RETURN 1;

ELSE

RETURN 0;

END IF;

END LIST_ACTIONS_CHECK_ADD;

请注意,作为一般事项,通常最好使用某种命名约定来确保参数和局部变量不共享列的名称 . 试图弄清楚 LISTNAME 是一个参数还是一个列名, LIST_NAME 和 LISTNAME 之间的区别通常会让未来的程序员感到困惑 . 就个人而言,我使用 p_ 前缀作为参数,并使用 l_ 前缀作为局部变量 . 我还建议使用锚定类型 - lists_master.list_name%type ,如果这是传入的内容

CREATE OR REPLACE FUNCTION LIST_ACTIONS_CHECK_ADD

(

P_LIST_NAME IN lists_master.list_name%type

)

RETURN NUMBER

AS

L_CNT NUMBER;

BEGIN

SELECT COUNT(LIST_NAME)

INTO L_CNT

FROM LISTS_MASTER

WHERE LIST_NAME = P_LIST_NAME;

IF (L_CNT > 0)

THEN

RETURN 1;

ELSE

RETURN 0;

END IF;

END LIST_ACTIONS_CHECK_ADD;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值