2009-08-04 12 views
5

के बराबर प्रदान करने के लिए मेरे पास एक अजीब स्थिति है। मुझे ओरेकल और माईएसक्यूएल में एनवीएल (कॉलुम्ना, कॉलमब) का उपयोग करना है। मैं एसक्यूएल को नहीं बदल सकता क्योंकि यह एक पैकेज में है जिसे मैं संपादित नहीं कर सकता लेकिन यह एकमात्र चीज है जो मेरे MySQL और Oracle के बीच के अनुप्रयोग में काम नहीं करती है।mysql फ़ंक्शन ओरेकल एनवीएल

मैं MySQL में एनवीएल() कैसे लिखूंगा। मैंने यहां देखा है (http://dev.mysql.com/doc/refman/5.0/en/create-function-udf.html) और ऐसा लगता है कि मुझे इसे सी में लिखना है और इसे 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

यह बैंग पर है! –

संबंधित मुद्दे