项目原来用ms sql,现在改为mysql
用c++ 写的项目,ado连接数据库。从来没用过mysql,听说只需要更改连接字符串,就使用ado的其他部分不用修改了。在此之前先创建数据库和存储过程:
数据库创建没什么问题。
存储过程就这么也通不过:drop procedure if exists proc_tblModelInfo_Insert
create procedure proc_tblModelInfo_Insert(
out ID int,
PersonID int,
FilePath nvarchar(256)
)
begin
  insert into ModelInfo('PersonID','FilePath') values(PersonID,FilePath)
  set ID = (select max('id') from ModelInfo)
end;mysql通不过
求语法,谢谢了
原帖:
http://topic.csdn.net/u/20120525/17/b3a84486-dfa1-4964-aaa2-6e080b4b7ee7.html?seed=195229220&r=78679788#r_78679788
发错论坛,移动到这,两边都给分哈。

解决方案 »

  1.   

    DELIMITER $$
    DROP PROCEDURE IF EXISTS proc_tblModelInfo_Insert$$
    CREATE PROCEDURE proc_tblModelInfo_Insert(
    OUT ID INT,
    PersonID INT,
    FilePath NVARCHAR(256)
    )
    BEGIN
       INSERT INTO ModelInfo(`PersonID`,`FilePath`) VALUES(PersonID,FilePath);
       SET ID = (SELECT MAX(`id`) FROM ModelInfo);
    END$$
    DELIMITER ;
      

  2.   

    drop procedure if exists proc_tblModelInfo_Insert
    create procedure proc_tblModelInfo_Insert(
    out ID int,
    PersonID int,
    FilePath nvarchar(256)
    )
    begin  insert into ModelInfo(`PersonID`,`FilePath`) values(PersonID,FilePath);
      set ID = (select max(`id`) from ModelInfo);end
      

  3.   

    mysql 写存储过程 一般要先定义定界付 用 DELEMITER
      

  4.   

    drop procedure if exists proc_tblModelInfo_Insert
    DELIMITER $$
    create procedure proc_tblModelInfo_Insert(
    out ID int,
    vPersonID int,
    vFilePath nvarchar(256)
    )
    begin
     insert into ModelInfo(PersonID,FilePath) values(vPersonID,vFilePath);
     set ID = (select max('id') from ModelInfo);
    END$$
    DELIMITER ;
      

  5.   

    细节问题,多加注意
    在drop procedure if exists proc_tblModelInfo_Insert 后面加分号测不过找我!
    应该这下面这样
    ===============================
    drop procedure if exists proc_tblModelInfo_Insert ;  //这里需要以分号结束好的
    DELIMITER $$create procedure proc_tblModelInfo_Insert(
    out ID int,
    vPersonID int,
    vFilePath nvarchar(256)
    )
    begin
     insert into ModelInfo(PersonID,FilePath) values(vPersonID,vFilePath);
     set ID = (select max('id') from ModelInfo);
    END $$
    DELIMITER ;
    =========================================================
      

  6.   

    drop procedure if exists proc_tblModelInfo_Insert
    delimiter$$
    create procedure proc_tblModelInfo_Insert(
    out ID int,
    PersonID int,
    FilePath nvarchar(256)
    )
    begin
      insert into ModelInfo('PersonID','FilePath') values(PersonID,FilePath)
      set ID = (select max('id') from ModelInfo)
    end $$
    delimiter;
    delimiter$$
      

  7.   

    drop procedure if exists proc_tblModelInfo_Insert
    delimiter$$
    create procedure proc_tblModelInfo_Insert(
    out ID int,
    PersonID int,
    FilePath nvarchar(256)
    )
    begin
      insert into ModelInfo('PersonID','FilePath') values(PersonID,FilePath)
      set ID = (select max('id') from ModelInfo)
    end $$
    delimiter;
      

  8.   

    今天双休,在家里下了个mysql测试,7# z1988316兄的方法通过了。
    星期一再在公司试试
      

  9.   

    最终的写法为:
    DELIMITER $$
    drop procedure if exists proc_tblModelInfo_Insert ;
    create procedure proc_tblModelInfo_Insert(
    out ID int,
    vPersonID int,
    vFilePath nvarchar(256)
    )
    begin
     insert into ModelInfo(PersonID,FilePath) values(vPersonID,vFilePath);
     set ID = (select max('id') from ModelInfo);
    END $$
    DELIMITER ;
    DELIMITER 后要有空格 哎。