2017-10-08 32 views
0

请我有一个问题,当我尝试写MySql上的存储过程,我如何可以转换存储过程从MS SQL到MySql

我的SQL Server上的程序是:

//// SQL服务器///

create Proc [dbo].[P_TestSup] @para1 int, @para2 bit output as 
begin 
     select @para2= count(IdCV) from CommandeVente,Client where 
     CommandeVente.IdClnCV=Client.IdCln and [email protected] 
End 

我试着写一个关于MySQL但它是不正确的

Error: check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3

//////的MySql //////

CREATE PROCEDURE P_TestSup(IN para1 INT, OUT para2 bit) 
begin 
select count(commandevente.idcv) into para2 from commandevente,client 
    where commandevente.idclncv= client.idcln and client.idcln=para1; 
End 

回答

0

也许你的问题是缺乏DELIMITER声明。并修复JOIN语法。输出参数的类型。另外,我会小心命名。

事情是这样的:

DELIMITER $$ 

CREATE PROCEDURE P_TestSup(
    in_para1 INT, 
    OUT out_para2 INT 
) 
BEGIN 
    SELECT count(commandevente.idcv) into out_para2 
    FROM commandevente ce 
     client c 
     ON ce.idclncv = c.idcln ; 
END;$$ 

DELIMITER ; 
+0

对不起我的问题,需要一些编辑 时,我想添加像==条件> 和c.idcln = in_para1; 他们说;检查与你的MySQL服务器版本相对应的手册,在'ON ce.idclncv = c.idcln和c.idcln = in_para1; END '在行3个 –

+0

感谢您的帮助,我使用此代码和它的工作===> ' DELIMITER $$ CREATE DEFINER ='root' @'localhost' PROCEDURE'P_TestSup'(在in_para1 INT,OUT out_para2 INT) BEGIN SELECT count(commandevente.idcv)into out_para2 FROM commandevente ce,client c where ce.idclncv = c.idcln and c.idcln = in_para1; END $$ DELIMITER; –

相关问题