Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plsql 创建PL SQL函数时出错_Plsql - Fatal编程技术网

Plsql 创建PL SQL函数时出错

Plsql 创建PL SQL函数时出错,plsql,Plsql,问题是: 创建一个名为“credit_limit”的函数,该函数将装运实体id(即实体id)作为输入,并返回varchar类型的limit_状态。 功能名称:信用额度 输入参数:int中的实体_id 输出变量:varchar类型的limit_状态变量 设计规则: 1.如果给定实体id的信用限额大于50000,则将限额状态显示为“信用限额大于50000” 2.如果给定实体id的信用限额小于50000,则将限额状态显示为“信用限额小于50000” 注意:不要更改解决方案中的给定状态消息 create

问题是: 创建一个名为“credit_limit”的函数,该函数将装运实体id(即实体id)作为输入,并返回varchar类型的limit_状态。 功能名称:信用额度 输入参数:int中的实体_id 输出变量:varchar类型的limit_状态变量

设计规则: 1.如果给定实体id的信用限额大于50000,则将限额状态显示为“信用限额大于50000” 2.如果给定实体id的信用限额小于50000,则将限额状态显示为“信用限额小于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;
/
创建或替换函数信用额度(实体id为整数)
返回varchar
是
信用额度编号(*,2);
极限状态varchar(255);
开始
从发货实体将信用额度选择到信用额度中
其中id=实体_id;
退货(信用额度);
如果信用额度>50000,则
限额_状态:='信用限额大于50000';
其他的
如果信用额度<50000,则
限额_状态:='信用限额小于50000';
如果结束;
返回(限制状态);
结束;
/
我输入了收到错误的代码

警告:函数创建时出现编译错误


请帮帮我。

您遇到问题的原因有两个:

1) 从
函数
只能返回一次
。您多次使用它

2)
IF-ENDIF
块之一中缺少
END IF

修改代码为:

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;
/
创建或替换函数信用额度(实体id为整数)
返回VARCHAR2
是
信用证限额编号(5,2);
极限状态VARCHAR(255);
开始
选择信用额度
进入信用额度
来自装运实体
其中id=实体_id;
如果信用额度>50000
然后
限额_状态:='信用限额大于50000';
其他的
如果信用额度<50000
然后
限额_状态:='信用限额小于50000';
如果结束;
如果结束;
退货(信用额度);
结束;
/

显示错误时
会给您带来什么?