[SQL] MySQL의 오류를주고있다 왜 "함수에서 결과 집합을 반환 할 수 없습니다"?
SQLMySQL의 오류를주고있다 왜 "함수에서 결과 집합을 반환 할 수 없습니다"?
나는 phpMyAdmin에를 사용하여이 오류를 받고 MySQL의 함수를 작성하려합니다.
#1415 - Not allowed to return a result set from a function
기능 코드는 다음과 같다
DELIMITER $$
CREATE FUNCTION get_binary_count(a INT, c INT)
RETURNS INT
DETERMINISTIC
BEGIN
DECLARE c1, c2 INT;
SET c1=0;
SET c2=0;
SELECT left_id AS c1 FROM mlm_user_mst WHERE parent_id=a AND left_id>0;
SELECT right_id AS c2 FROM mlm_user_mst WHERE parent_id=a AND right_id>0;
IF(c1>0 AND c2>0)
THEN
SET c=c+1;
SET c=c+get_binary_count(c1,0);
SET c=c+get_binary_count(c2,0);
END IF;
RETURN c;
END$$
DELIMITER ;
어떤 제안?
미리 감사드립니다
해결법
-
==============================
1.때문에
때문에
SELECT left_id AS c1 FROM mlm_user_mst WHERE parent_id=a AND left_id>0;
변수 (C1)를 설정하지 않습니다, 그것은 열 이름 (C1)와 집합을 반환
당신이 원하는
SELECT left_id INTO c1 FROM mlm_user_mst WHERE parent_id=a AND left_id>0;
마찬가지로 C2 대한.
-
==============================
2.당신이 출력이 변수 나해야 일시적으로 내부 기능에 저장되지 않은 SELECT 쿼리를 사용하고 있기 때문이다. 기능은 하나의 단일 값을 반환 할 수 있습니다. 그래서 코드는 다음과 같이해야합니다 :
당신이 출력이 변수 나해야 일시적으로 내부 기능에 저장되지 않은 SELECT 쿼리를 사용하고 있기 때문이다. 기능은 하나의 단일 값을 반환 할 수 있습니다. 그래서 코드는 다음과 같이해야합니다 :
CREATE TABLE t1 AS SELECT left_id AS c1 FROM mlm_user_mst WHERE parent_id=a AND left_id>0; CREATE TABLE t2 AS SELECT right_id AS c2 FROM mlm_user_mst WHERE parent_id=a AND right_id>0;
또는
SELECT left_id AS c1 INTO @c1 FROM mlm_user_mst WHERE parent_id=a AND left_id>0 LIMIT 1; SELECT right_id AS c2 INTO @c2 FROM mlm_user_mst WHERE parent_id=a AND right_id>0 LIMIT 1;
from https://stackoverflow.com/questions/11880306/why-mysql-is-giving-error-not-allowed-to-return-a-result-set-from-a-function by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 오라클 / SQL : - 리턴 제로 행 왜 쿼리 "WHERE ROWNUM> = 5 AND ROWNUM <= 10 기록 SELECT * FROM"않습니다 (0) | 2020.05.26 |
---|---|
[SQL] 다른 테이블의 데이터를 사용하여 계산 된 열 만들기 (0) | 2020.05.26 |
[SQL] SSRS 2008 보고서의 제로 / 널 해결 방법으로 나누기 (0) | 2020.05.26 |
[SQL] 어떻게 SQLite는 쉼표로 구분 된 값을 분할하려면? (0) | 2020.05.26 |
[SQL] 정확히 어떻게 사용 또는 MySQL의 문은 괄호없이 /와 다른 점은 무엇입니까? (0) | 2020.05.26 |