MySQL : 저장 프로 시저에서 여러 필드를 여러 변수로 선택


106

MySQL의 동일한 선택 쿼리 내에서 여러 열을 여러 변수로 선택할 수 있습니까?

예를 들면 :

DECLARE iId INT(20);
DECLARE dCreate DATETIME;

SELECT Id INTO iId, dateCreated INTO dCreate 
FROM products
WHERE pName=iName;

이에 대한 올바른 구문은 무엇입니까?

답변:


220

귀하의 문법은 꽤 괜찮되지 않습니다 : 당신은 INTO 전에 순서대로 필드를 나열해야하고, 해당 목표 변수 후 :

SELECT Id, dateCreated
INTO iId, dCreate
FROM products
WHERE pName = iName

6
+1. 이것은 T-SQL 구문이 더 명확한 경우입니다. 이 목록을 별도의 목록으로 사용하면 DECLARE CURSOR 및 FETCH와 동일한 유지 관리 문제가 발생합니다.
harpo

Pl / Sql도 동일합니다.
Aniket Thakur

11

========== 조언 ==========

@martin clayton 대답은 맞지만 이것은 조언 일뿐입니다.

저장 프로 시저에서 모호한 변수를 사용하지 마십시오.

예 :

SELECT Id, dateCreated
INTO id, datecreated
FROM products
WHERE pName = iName

위의 예는 오류 (null 값 오류)를 발생시킵니다.

아래의 예가 정확합니다. 이해가 되길 바랍니다.

예 :

SELECT Id, dateCreated
INTO val_id, val_datecreated
FROM products
WHERE pName = iName

다음과 같이 테이블을 참조하여 모호하지 않게 만들 수도 있습니다.

[ 출처 : maganap ]

SELECT p.Id, p.dateCreated INTO id, datecreated FROM products p 
WHERE pName = iName

다음과 같이 표를 참조하여 명확하게 만들 수도 있습니다.SELECT p.Id, p.dateCreated INTO id, datecreated FROM products p WHERE pName = iName
maganap

2

Martin의 대답 대신 쿼리 끝에 INTO 부분을 추가하여 쿼리를 더 읽기 쉽게 만들 수도 있습니다.

SELECT Id, dateCreated FROM products INTO iId, dCreate

@KusalDissanayake MySQL에 대한 질문이있었습니다
ibai
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.