问题是: 创建一个名为' 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;
/
我输入的代码收到错误
警告:使用编译错误创建的函数。
请帮帮我。
答案 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;
/