2017-11-06 14 views
-1

質問: 配送エンティティID(entity_id)を入力として受け取り、タイプvarcharのlimit_statusを返す 'credit_limit'という名前の関数を作成します。 機能名:のcredit_limit 入力パラメータ:int型 出力変数でENTITY_ID:varchar型のlimit_status変数PL SQL関数の作成中にエラーが発生します

デザインルール: 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

'ショーerrors'はあなたに何を与えるのでしょうか? –

答えて

0

あなたは理由2つの理由で問題を得る:

1)あなたができるreturnを一度だけFunctionから。あなたはmultiple回使用しました。

2)IF-ENDIFブロックの1つにEND IFがありません。コードをModifed

は次のとおりです。

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; 
/
関連する問題