2011-11-08 3 views
3

MySQL에 저장 프로 시저를 작성하고 있습니다. 다음은 내가 작성한 코드입니다.mysql prepared statement에서 리턴 값을 선택하는 방법은 무엇입니까?

SET @qry = 'SELECT id into @wid FROM work_profile where candidate_id = 1223 limit 1'; 
PREPARE statement FROM @qry; 
EXECUTE statement; 

그러나 실행 후에는 @wid이 null입니다.

SELECT id FROM work_profile where candidate_id = 1223 limit 1 

이는이 구문에 사용하기 위해 하나 개의 행을 반환 할 수 있습니다 1443.

+1

이 테이블에 데이터가 work_profile 않습니다 더, 예를 EXECUTE MySQL의 설명서를 참조하십시오

? 'SELECT id FROM work_profile'을 실행하십시오. 전체 코드를 표시하십시오. @wid 변수는 어떻게 사용합니까? – Devart

+0

편집 된 질문 – Anand

+0

을 참조하십시오. @wid 변수는 어떻게 사용합니까? – Devart

답변

3

다음 작품 :

USE test; 
DELIMITER $$ 
CREATE PROCEDURE GETNID() 
BEGIN 
    SET @query = 'SELECT 100 INTO @nid'; 
    PREPARE statement1 FROM @query; 
    EXECUTE statement1; 
END$$ 
DELIMITER ; 

그리고 프로 시저를 호출 할 수는 :

CALL GETNUMBER(); 
SELECT @nid; 

그러나, 이것은 MySQL의 쿼리 브라우저에서 작동하지 않습니다. 나는 MySQL 커맨드 라인 클라이언트를 사용해야했다. 쿼리 브라우저가 각 문 다음에 세션을 지우는 것 같습니다.

0

쿼리의 값을 반환합니다. 어느 하나 개의 행을 반환하는 WHERE 절을 지정하거나 LIMIT 1

+1

하지만 null이 반환되는 경우에도 그 위치와 제한을 추가했습니다. – Anand

0

이 쿼리는 값으로 단일 행을 반환합니다 INTO는 쿼리에서 @wid 제거이

set @qry := 'test'; 
execute statement using @qry 
0

을 시도하고 LIMIT 1을 추가하면 필요. 나를 위해

관련 문제