簡體   English   中英

獲取pl / sql ora-00909錯誤,其中相同的代碼在mysql上未給出任何錯誤

[英]Getting Pl/sql ora-00909 error, where same code doesn't give any errors on mysql

我有一個頁面可以很好地與mysql和php配合使用,因此我試圖在同一頁面中將oracle與php一起使用。 我是pl / sql的新手,但遇到了問題。 (順便說一下,代碼在mysql上有效)

我在以下代碼示例中收到錯誤(ORA-00909),有人可以告訴我這是什么問題?

concat(isnull(concat(sihe.V_1_INT, '~'), ''),
        isnull(concat(sihe.V_1_DOUBLE, '~'), ''),
        isnull(concat(sihe.V_1_DATE_1, '~'), ''),
        isnull(sihe.V_1_DATE_2, '')
       ) AS V_OBIS_CODE_VALUE_1,

編輯:mysql版本

concat(ifnull(concat(`sihe`.`fld_1_int`, '~'), ''),
            ifnull(concat(`sihe`.`fld_1_double`, '~'), ''),
            ifnull(concat(`sihe`.`fld_1_date_time_1`, '~'),
                    ''),
            ifnull(`sihe`.`fld_1_date_time_2`, '')) AS `fld_obis_code_value_1`,

您只能在Oracle CONCAT函數中傳遞兩個參數,因此會出現此錯誤,並且Oracle中也不支持isull

在oracle中嘗試以下簡單示例,由於oracle內部將空字符串更改為Null,因此您可以忽略null檢查

sihe.v_1_int||'~'||v_1_double||'~'||v_1_date_1||'~'||v_1_date_2 
AS V_OBIS_CODE_VALUE_1

編輯1:-

通過使用COALESCE代替IFNULL並僅使用帶有兩個參數的CONCAT,我們可以在MYSQL和ORACLE 鏈接中使用以下代碼進行測試

select concat(concat(concat(concat(concat(concat('string1','~'),
       COALESCE(null,'string2')),'~'),'string3'),'~'),
       'string4') from dual; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM