我遇到了一個非常奇怪的情況。 我有兩個Oracle XE安裝。使用多重連接時,SQLPLUS不返回數據
一個安裝在西班牙語Windows機器中的另一個英文windows機器。
我有一個SQL查詢在西班牙語系統上運行。這個SQL有許多連接。當我使用SQLPLUS執行該SQL時,我沒有收到整數或長整型數據。
我很害怕,因爲我可以想象,表中有數據必須出現在查詢結果中。因此,我將模式導出到我的英文系統中。並使用SQLPLUS運行相同的SQL查詢。我用很多數據得到了預期的結果。
我的SQL沒有問題。這個SQL在我的項目中使用了很長時間。
查詢看起來like--
SELECT
device_id,
SUM(COALESCE(total_page_volume,
0)) AS total_page_volume,
SUM(COALESCE(total_page_volume,
0)-COALESCE(color_page_volume,
0)) AS mono_page_volume,
SUM(COALESCE(color_page_volume,
0)) AS color_page_volume,
SUM(COALESCE(total_page_volume,
0)) as totalvolume,
SUM(COALESCE(color_page_volume,
0)) as colorvolume,
SUM(COALESCE(total_page_volume,
0)-COALESCE(color_page_volume,
0)) as monovolume,
SUM(COALESCE(print_volume,
0)) AS print_volume,
SUM(COALESCE(copy_volume,
0)) AS copy_volume,
SUM(COALESCE(fax_volume,
0)) AS fax_volume,
SUM(COALESCE(total_oversize_volume,
0)) AS total_oversize_volume,
SUM(COALESCE(total_duplex_volume,
0)) AS total_duplex_volume,
SUM(COALESCE(num_detected_error_states,
0)) AS num_detected_error_states,
SUM(COALESCE(num_device_status,
0)) AS num_device_status,
SUM(COALESCE(num_printer_status,
0)) AS num_printer_status,
MIN(start_time) as minday,
MAX(end_time) as maxday
FROM
device_data_summary,
group_membership g_m ,
group_closure g_c
WHERE
g_m.entity_id=device_id
AND g_c.child_id=g_m.group_id
AND g_c.parent_id = 95
AND CAST(start_time AS TIMESTAMP) >= CAST(TO_CHAR(g_m.start_date,'DD-MON-YYYY') AS TIMESTAMP)
AND (
(
g_m.end_date is NULL
)
or (
CAST(end_time AS TIMESTAMP) <= CAST(g_m.end_date AS TIMESTAMP)
)
)
AND start_time>=to_timestamp('2016-07-25 00:00:00','YYYY-MM-DD HH24:MI:SS')
AND end_time<=to_timestamp('2016-08-24 23:59:59','YYYY-MM-DD HH24:MI:SS')
AND period=1
GROUP BY
device_id;
沒有看到代碼,我猜想你有一些隱式的數據類型轉換,其行爲有所不同,具體取決於會話的NLS設置。無論代碼是否重現了這個問題,我都會期待這個問題被關閉。 –
任何想法哪種數據類型可以有這樣的問題。 ? – Sirsendu
字符串,日期和數字都將潛在地轉換爲不同的對象。假設問題不在於你在兩個系統中有不同字符集中的數據(即,當您使用US7ASCII導入到英語系統時,西班牙語系統將字符串「León」轉換爲「Leon」字符集)。 –