2013-11-15 1 views
0

MySql 프로 시저에 약간의 문제가 있습니다. 내가 가지고있는 것 :MySql 변수의 삽입을위한 프로 시저 값

DROP TABLE IF EXISTS `employees2`; 
CREATE TABLE `employees2` (
    `LastName` varchar(20) character set utf8 collate utf8_unicode_ci NOT NULL default '', 
    `FirstName` varchar(10) character set utf8 collate utf8_unicode_ci NOT NULL default '' 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

괜찮아.

와 MySQL 절차

:

DROP PROCEDURE IF EXISTS gen; 

DELIMITER $$ 
CREATE PROCEDURE gen() 
    BEGIN 
     DECLARE e1 TEXT; 
     DECLARE e2 TEXT; 
     DECLARE e3 TEXT; 
     SET e1 = "Davolio"; 
     SET e2 = "Nancy"; 
     SET e3 = "Ron , Deplin"; 
     insert into `employees2`(`LastName`,`FirstName`) values ('Nonew','adams'); 
     insert into `employees2`(`LastName`,`FirstName`) values (e1,e2); 
     insert into `employees2`(`LastName`,`FirstName`) values (e3); 

    END $$ 
DELIMITER ; 

call gen(); 

나는 변수 E3에서 테이블 값으로 instert 싶습니다. "Ron"은 열 LastName이고 "Deplin"은 FirstName 열입니다. 하지만 난 오류가 : "오류 코드 : 1136. 열 개수가 1 행에서 값 개수와 일치하지 않습니다"첫 번째 및 두 번째 삽입 잘 작동합니다. 세 번째 삽입물을 강제로 작동시키는 방법?

답변

0

마지막 삽입에 이름이 지정된 두 개의 열이있는 값 하나만 지정하면 불일치 행 수가 계산됩니다. https://stackoverflow.com/a/9953163/2812842

+0

예 :

는 두 개의 값 항목을 가지고 같은 문자열을 분할 MySQL을 사용하는 방법에 대한이 게시물을 참조하십시오. 하지만 : SET e3 = "Ron, Deplin"; 그리고 Ron은 LastName 열이고 Deplin은 FirstName 열입니다. 삽입 쿼리에서이 e3을() 사이에 붙여 넣기 만하면됩니다. – marooned

+0

확인. 'employees2' ('LastName','FirstName') 값에 삽입하십시오 (SUBSTRING_INDEX (e3, ',', 1), SUBSTRING_INDEX (e3, ',', -1)); ' 그것은 작동하지만 그것은 내가 원하는. 내가 더 긴 가치 목록을 가질 때이 방법은 쓸모 없을 것이다. – marooned

+0

그런 식으로 문자열을 분할해야합니까? 데이터가 많을수록 별도의 필드 나 구조화 된 데이터를 사용해야합니다 ... –