如何将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 是如何写的?谢谢。