mysql에서 저장된 함수를 호출하지만 오류가 발생합니다 .Subquery가 2 개 이상의 행을 반환합니다.

우 환위

mysql 데이터베이스에는 사용자 정보가 저장된 'usertest'라는 테이블이 있습니다. 그리고 'getId'라는 UDF를 성공적으로 만듭니다. 다음과 같이 생성되었습니다.

create function getId(name varchar(255))
returns int
begin
declare id_found int;
set id_found=(select Id from usertest where Name=name);
return id_found;
end

괜찮을 텐데 전화를 걸면

select getId('mike');

mysql 엔진이 오류를보고합니다.

Subquery returns more than 1 row.

하지만 usertest 테이블에는 Name = 'mike'인 행이 하나뿐입니다. 그것이 유선입니다. 누군가가 이유를 말할 수 있습니까? 미리 감사드립니다 :)

Barmar

열 이름 및 변수는 대소 문자를 구별하지, 그래서 Namename같은 일이다. 그것은 비교 아니에요 Name에 열을 name가 비교하는 것, 변수 name는 항상 참, 그래서 그 자체로 변수를.

함수 매개 변수에 다른 이름을 사용하십시오.

create function getId(name_param varchar(255))
returns int
begin
declare id_found int;
set id_found=(select Id from usertest where Name=name_param);
return id_found;
end

또는 테이블 이름 접두사를 사용하십시오.

create function getId(name varchar(255))
returns int
begin
declare id_found int;
set id_found=(select Id from usertest where usertest.Name=name);
return id_found;
end

MySQL 참조 : 저장 프로 시저 매개 변수 이름이 테이블 열 이름과 동일한 경우

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관