作为变量插入的MySql过程值

时间:2013-11-15 20:06:15

标签: mysql sql

我在使用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中查看表值。 “Ron”用于列LastName,“Deplin”用于列FirstName。但我收到错误:“错误代码:1136。列数与第1行的值计数不匹配”第一个和第二个插入工作正常。如何强制第三个插件工作?

1 个答案:

答案 0 :(得分:0)

您只需指定一个值,其中包含在上一次插入中命名的两列,因此行数不等。

请参阅这篇文章,了解如何使用MySQL分割字符串,就像有两个值条目一样: https://stackoverflow.com/a/9953163/2812842