创建PL SQL函数时出错

时间:2017-11-06 11:10:01

标签: plsql

问题是: 创建一个名为' credit_limit'它将货运实体ID(即entity_id)作为输入,并返回varchar类型的limit_status。 功能名称:credit_limit 输入参数:int中的entity_id 输出变量:varchar

类型的limit_status变量

设计规则      1.如果给定实体ID的credit_limit大于50000,则显示limit_status为'信用限额大于50000'      2.如果给定实体id的credit_limit小于50000,则显示limit_status为'信用额度小于50000' 注意:请勿更改解决方案中的给定状态消息。

create or replace function credit_limit (entity_id in integer)
return varchar
is
c_credit_limit NUMBER(*,2);
limit_status varchar(255);
begin
select credit_limit into c_credit_limit from shipment_entity 
where id = entity_id;
return(c_credit_limit);
if c_credit_limit > 50000 then
limit_status := 'Credit limit is greater than 50000';
else
if c_credit_limit < 50000 then
limit_status := 'Credit limit is less than 50000';
end if;
return (limit_status);
end;
/

我输入的代码收到错误

  

警告:使用编译错误创建的函数。

请帮帮我。

1 个答案:

答案 0 :(得分:0)

由于两个原因,你会遇到问题:

1)您return只能Function一次。您使用它multiple次。

2)其中一个END IF块中缺少IF-ENDIF

修改后的代码是:

CREATE OR REPLACE FUNCTION credit_limit (entity_id IN INTEGER)
   RETURN VARCHAR2
IS
   c_credit_limit   NUMBER (5, 2);
   limit_status     VARCHAR (255);
BEGIN
   SELECT credit_limit
     INTO c_credit_limit
     FROM shipment_entity
    WHERE id = entity_id;

   IF c_credit_limit > 50000
   THEN
      limit_status := 'Credit limit is greater than 50000';
   ELSE
      IF c_credit_limit < 50000
      THEN
         limit_status := 'Credit limit is less than 50000';
      END IF;
   END IF;

   RETURN (c_credit_limit);
END;
/