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

如何将sql server 存储过程转为Mysql的
SQL code

/* table name:Clients  */
CREATE PROCEDURE [sp_Clients]
@sp_sort varchar(20)=NULL,
@max_column_name varchar(30)=NULL,/*max字段名*/
@Spcial_field varchar(50)=NULL,/*查找指定的字段*/
@Spcial_field_value varchar(50)=NULL,/*查找指定的字段的值*/
@sp_return int=NULL output,
@ClientId int=NULL,/*顾客ID*/
@ClientsName varchar(50)=NULL,/*顾客名称*/
@ClientsDescription varchar(50)=NULL,/*顾客描述*/
@Phones varchar(100)=NULL,/*电话号码*/
@ContactPeople varchar(60)=NULL,/*联系人*/
@MobilePhone varchar(30)=NULL,/*手机*/
@Remark varchar(400)=NULL/*备注*/
AS
/*================== insert data ======================*/
if @sp_sort='sp_insert'
BEGIN
 /* todo ...省略*/
END

/*================== update data ======================*/
else if @sp_sort='sp_update'
BEGIN
 /* todo ...省略*/
END

/*================== get max id ======================*/
/* 如何转成 mysql */
else if @sp_sort='sp_getmaxid'
BEGIN
    declare @sql_max varchar(100);  
    set @sql_max ='SELECT ';
    set @sql_max=@sql_max+' ISNULL(MAX('+@max_column_name+'),'''') FROM Clients'
    EXECUTE (@sql_max); 
END

/*================== judge the record is exist or not ======================*/
/* 如何转成 mysql */
else if @sp_sort='sp_exists'
BEGIN
    SELECT @sp_return = count(1) FROM Clients WHERE [ClientId]=@ClientId  
    IF @sp_return <> 0
    BEGIN
        set @sp_return=1
    END
    RETURN @sp_return
END

/*============== judge the special record is exist or not ==================*/
/* 如何转成 mysql */
else if @sp_sort='sp_exists_special'
BEGIN
    declare @sql_field varchar(200);
    set @sql_field=N'SELECT @sp_return = count(1) FROM Clients WHERE ' + @Spcial_field + ' = ''' + @Spcial_field_value+'''' 
    EXEC sp_executesql @sql_field,N'@sp_return int output',@sp_return output  
END

/*================== get model (a record) ======================*/
else if @sp_sort='sp_getmodel'
BEGIN
 /* todo ...省略*/
END

GO



PS:在sql server 的存储过程中的参数,如果程序没有必要调用的话,可以不传,在存储过程写 参数=NULL就可以了,
如:@ClientId int=NULL ,不知mysql 是如何写的?谢谢。

------解决方案--------------------
引用PS:在sql server 的存储过程中的参数,如果程序没有必要调用的话,可以不传,在存储过程写 参数=NULL就可以了,
如:@ClientId int=NULL ,不知mysql 是如何写的?谢谢。