首页 > 解决方案 > 当我尝试创建 log_in 函数时?为什么我有错误 Error(3,10): PLS-00215: String length constraint must be in range (1 .. 32767)

问题描述

我正在尝试创建一个函数来验证 log_in,如果登录失败,则返回 0(零),如果登录成功,则通过将 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;

标签: sqlplsql

解决方案


首先,您尝试选择 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;

推荐阅读