2009-08-04 4 views
5

이상한 상황이 있습니다. 오라클과 MySQL에서 NVL (columna, columnb)을 사용해야합니다. 내가 수정할 수없는 패키지에있는 것처럼 SQL을 변경할 수는 없지만 MySQL과 Oracle 사이에있는 응용 프로그램에서는 작동하지 않는 유일한 것입니다.mysql 함수는 Oracle에 상응하는 NVL을 제공합니다

MySQL에서 NVL()을 어떻게 작성합니까? 나는 여기 (http://dev.mysql.com/doc/refman/5.0/en/create-function-udf.html)를 보았고 C로 작성하고 MySQL에 링크해야만하는 것처럼 보입니다.

그러나 http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html은 추가 기능을 컴파일하지 않고도 할 수 있다고합니다.

나는 이것을 시도했지만 작동하지 않습니다. 내가 뭘 잘못하고있어??

CREATE FUNCTION NVL (first DATETIME, second DATETIME) 
RETURNS DATETIME 
begin 
DECLARE first DATETIME; 
DECLARE second DATETIME; 
DECLARE return_value DATETIME; 
SET return_value = IFNULL(first,second); 
RETURN return_value; 
end 

답변

8

사용 COALESCE, 그것은 훨씬 더 간단합니다

DELIMITER $$ 

CREATE FUNCTION NVL (first DATETIME, second DATETIME) 
RETURNS DATETIME 
BEGIN 
     RETURN COALESCE(first, second); 
END 

$$ 

DELIMITER ; 
+0

이에 강타하다! –

관련 문제