日期:2014-05-16  浏览次数:20889 次

MySql 存储过程的语法
项目原来用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
发错论坛,移动到这,两边都给分哈。

------解决方案--------------------
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 ;
------解决方案--------------------
SQL code
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 写存储过程 一般要先定义定界付 

用 DELEMITER
------解决方案--------------------
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 ;
------解决方案--------------------
提问时请把错误信息一同贴出以供别人分析。

问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧)
------解决方案--------------------
细节问题,多加注意
在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 ;
=========================================================

------解决方案--------------------
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$$


------解决方案--------------------
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;