MySQL 데이터베이스를 쿼리하려고합니다. 정수로 데이터베이스에 저장된 필드는 정수로 반환됩니다. 이는 예상했던 것입니다. 저장 프로 시저에서 계산 된 값이있을 때 숫자가 0 또는 1이 될 것이라고 보장 할 수 있더라도 항상 longlong으로 반환됩니다.MySQL의 계산 된 필드의 정수
계산 된 필드의 결과가 여전히 int로 반환됩니다.
흥미롭게도보기에서 계산을 수행 한 다음 해당보기를 쿼리하면 문제를 해결하는 것처럼 보이지만 엄청난 성능 저하가 발생합니다.
편집
나는 것 사용하려고 해요 절차의 종류의 예 : 나는 문제를 단순화하기 위해 시도했습니다 2
DELIMITER //
CREATE PROCEDURE getProjectFinance(IN projectID varchar(30))
BEGIN
SELECT p.projectID as id,
(Select sum(COALESCE(v.Cost, 0))
from variations v
where v.projectID = p.projectID) as total
FROM Projects p
WHERE p.projectID = projectID;
END//
DELIMITER ;
DELIMITER //
CREATE PROCEDURE getAllProjectsFinance()
BEGIN
SELECT p.projectID as id,
(Select sum(COALESCE(v.Cost, 0))
from variations v
where v.projectID = p.projectID) as total
FROM Projects p
END//
DELIMITER ;
편집 약간. 다음 SQL 명령은 longlong (8 바이트) 유형의 단일 필드 (count)가있는 레코드를 리턴합니다. 대신 create procedure ...
의
SELECT cast((Select 1) as signed integer) as count;
반환 값에 대해 이야기하고 있으므로 저장 프로 시저가 아니라 프로 시저가 아니라고 가정합니다. 상점 함수의 정의를 게시 할 수 있습니까 ('SHOW CREATE FUNCTION function_name' 도움이됩니까?)? 명시 적으로 반환 유형을 정의해야합니다. – lanzz
Updated, 명시 적으로 반환 형식을 정의하는 방법을 잘 모르겠습니다. – ForbesLindesay