当我尝试创建log_in函数时为什么会出现错误Error(3,10):PLS-00215:字符串长度限制必须在(1 .. 32767)范围内

时间:2018-12-10 01:26:01

标签: sql plsql

我试图创建一个函数来验证登录成功,如果登录失败,则返回0(零),如果登录成功,则返回1(一个),方法是将cust_id和Passwd匹配为参数,我有两个问题:

  1. 为什么错误绑定p_cust_id会出错?
  2. 失败时如何返回0?

create or replace function log_in
( 
   p_cust_id varchar2, 
   p_paswd varchar2
) return number
as p_all varchar2;    
begin     
  select cust_id,passwd
  into p_all
  from customer
  where cust_id=p_cust_id and passwd=p_paswd;

  return 1;
end;

1 个答案:

答案 0 :(得分:0)

首先,您尝试选择2列,但改为1个变量。这是不可能的。在下面检查我的修复程序

select cust_id,passwd
into variable1, variable2
from customer
where cust_id=p_cust_id and passwd=p_paswd;

第二项要求,您需要在结束之前添加以下行。

EXCEPTION WHEN NO_DATA_FOUND THEN
  return 0;
END;

编辑

您的过程也可以重写为

CREATE OR REPLACE FUNCTION LOG_IN
( 
   P_CUST_ID VARCHAR2, 
   P_PASWD VARCHAR2
) RETURN NUMBER
AS P_COUNT NUMBER;    
BEGIN     
  SELECT COUNT(*)
  INTO P_COUNT
  FROM CUSTOMER
  WHERE CUST_ID=P_CUST_ID AND PASSWD=P_PASWD;

  IF (P_COUNT > 0)
    RETURN 1;
  END IF;

  RETURN 0;
END;