2011-09-24 2 views
0

이 기능 getNearIds을 만들 반환 함수를 만들 무엇MySQL은 : RETURNS (더블 myLocationLat, 더블 myLocationLon)를 배열

난 그냥 긴 검색 후, 정수의 배열을 반환 할 : 일부 만들기 위해 GROUP_CONCAT을 사용하는 말 목록을 쉼표로 구분 된 목록으로 작성한 다음 함수를 호출 할 때 find_in_set을 사용하십시오. 이것은 괜찮지 만 HQL (Hibernate query language)에서는 작동하지 않습니다.

그래서이 함수가 정수 배열을 반환하는 명확한 방법이 필요합니다. 항목 테이블에서 항목 목록을 반환하려면 어떻게 할 수 있습니까?

저는 Oracle DB 또는 SQL 서버에서이 작업이 매우 간단하다고 생각합니다. 왜 MySQL에서는 매우 힘든 일입니다.

도와주세요.

답변

2

대신 저장 프로 시저를 사용하지 않는 이유는 무엇입니까? 하나의 열만있는 행이있는 결과 집합을 반환하도록 할 수 있습니다.

저장된 함수는 원하는 작업을 수행 할 수 없습니다. 글쎄, 그 그룹 concat 일을 할 수 있다고 생각하지만 왜 귀찮게합니까? 저장 프로 시저를 생성하고 원하는 int를 반환하도록하십시오. 같은

뭔가 : 귀하의 우려에 대한 모든 감사의

CREATE PROCEDURE getNearIds 
    (myLocationLon double, myLocationLat double) 
BEGIN 
    # whatever your logic is to get the ids... 
    # e.g., 
    select id from locations where [whatever "near" means] 
END 
+0

첫째. 나는 당신에게 스토어드 프로 시저에 동의한다. 그러나 나는 "OUT"이라는 청취자의 주장을 정의해야한다. 다른 말로하면 나는 누가 proc의 호출자가 당신의 select 문에서 이러한 id를 얻을 것인가? 미안 해요 나는 근본적으로 새로운 SQL에 새로 추가 할 수있는 신탁 개발자이지만 흥미로운 제한을 찾고 있지만 개발을 쉽게하는 더 간단한 데이터베이스 엔진입니다. –

+0

귀하의 질문을 이해하지만,이 예제에서는 "OUT"이 없습니다. 결과 집합을 반환하는 proc입니다. 기본적으로 각각 int 열 유형의 행 모음입니다. 신분증은 뭐든지 될 수 있지, 그렇지? 그것은 귀하의 DB 테이블에 따라 달라집니다,하지만 ID가 정수라고 가정합니다. 질문을 바꾸면 어쩌면 그 말이 더 의미가 있는지 알 수 있습니다. – itsmatt

+0

이봐, 이거 재미있어. 당신은 ** 결과 집합을 반환하는 proc입니다 ** .... proc는 뭔가를 반환 할 수 있습니다. 글쎄,이게 정말 나에게 새 샘플을 보내주십시오 샘플 proc을 사용하는 방법에 대한 위의. 이 정보에 대해 대단히 감사합니다. –