我使用的 MySQL Connector/NET 6.1.3 执行一个存储过程,这个存储过程很简单,就两个Insert语句,分别把外部传入的参数插入到两个表中。
     结果数据是插进去了,但是插入的数据,却没有对应指定的列,麻烦大家给看看CREATE DEFINER=`abc`@`%` PROCEDURE `InsertAllInfos`
(`@A` varchar(200),
`@B` varchar(50),
`@C` varchar(100),
`@D` varchar(100))
BEGIN
SET NAMES 'utf8';
INSERT INTO Table1
(
  A,B
)
VALUES
(
  @A,@B
)
INSERT INTO Table2
(
  C,D
)
VALUES
(
@C,@D
);
END;

解决方案 »

  1.   

    没有插入到指定的列?
    INSERT   INTO   Table1 
    ( A,B ) VALUES ( @A,@B ) ;
    INSERT   INTO   Table2 
    ( C,D ) VALUES (@C,@D );
    表的字符集是否是utf8?
      

  2.   

    是的,简单说:就是我通过存储过程分别向 Table1和Table2 各插入10个值,但是这些值没有插入到指定的列。
      

  3.   

    @A 和SQL SERVER不一样,MYSQL中@代表连接级变量!
    CREATE PROCEDURE `InsertAllInfos`
    (`v_A` varchar(200),
    `v_B` varchar(50),
    `v_C` varchar(100),
    `v_D` varchar(100))
    BEGIN
    SET NAMES  'utf8 ';
    INSERT INTO Table1(A,B) VALUES(  v_A,v_B);   -- 少了个 ; ACMAIN
    INSERT INTO Table2(  C,D)VALUES(v_C,v_D);
    END;
      

  4.   

    (`v_A` varchar(200),
    `v_B` varchar(50),
    `v_C` varchar(100),
    `v_D` varchar(100))我之前没用“@”而是用‘$A,$B,$C...’
      

  5.   


    贴你实际的代码出来,或者能够比较准确反应问题的代码。或者你可以先直接在MYSQL中测试一下这个 `InsertAllInfos` 看看结果如何,以断定是存储过程的问题还是C#程序中的问题。