[英]Converting MSSQL function to MySQL
我無法將以下MSSQL函數轉換為MySQL。
USE [EkoPayroll]
GO
/****** Object: UserDefinedFunction [dbo].[fn_GetLowestOf3] Script Date: 01/31/2014 13:52:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[fn_GetLowestOf3] (
@num1 numeric,
@num2 numeric,
@num3 numeric
)
RETURNS numeric AS
BEGIN
declare @num numeric
set @num=@num1
IF @num2<@num1
SET @num=@num2
IF @num3<@num
SET @num=@num3
RETURN @num
END
DELIMITER $$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
FUNCTION `eko_payroll`.`GetLowestOf3`(num1 numeric,
num2 numeric,
num3 numeric)
RETURNS
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
numeric
BEGIN
declare num numeric
set num=num1
IF num2<num1
SET num=num2
IF num3<num
SET num=num3
RETURN num
END$$
DELIMITER ;
我收到了錯誤
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set num=num1
IF num2<num1
SET num=num2
IF num3<num
SET num=num3
我該如何解決?
我想你錯過了THEN
和END IF
關鍵字
仔細看看指定IF語法的語法
所以像
CREATE
FUNCTION `GetLowestOf3`(num1 numeric,
num2 numeric,
num3 numeric)
RETURNS
numeric
BEGIN
declare num numeric;
set num=num1;
IF num2<num1 THEN
SET num=num2 ;
END IF;
IF num3<num THEN
SET num=num3;
END IF;
RETURN num;
END
你也可以試試
CREATE
FUNCTION `GetLowestOf3`(num1 numeric,
num2 numeric,
num3 numeric)
RETURNS
numeric
BEGIN
declare num numeric;
SET num =
(
SELECT MIN(Val)
FROM
(
SELECT num1 Val
UNION ALL
SELECT num2
UNION ALL
SELECT num3
) t
);
RETURN num;
END
MySQL具有最低功能
使用兩個或多個參數,返回最小(最小值)參數。
SELECT LEAST(3,2,1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.