W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
通過隱式轉(zhuǎn)換或不指定格式模型的顯式轉(zhuǎn)換將日期時間值轉(zhuǎn)換為文本時,格式模型由一個全局會話參數(shù)定義。根據(jù)源數(shù)據(jù)類型,這些參數(shù)名稱為? NLS_DATE_FORMAT
?、?NLS_TIMESTAMP_FORMAT
? 或 ?NLS_TIMESTAMP_TZ_ FORMAT
?。這些參數(shù)的值可以在客戶端環(huán)境或 ?ALTER SESSION
?語句中指定。
當(dāng)不指定格式模型的顯式轉(zhuǎn)換對動態(tài)構(gòu)造的 SQL 語句中的日期時間值進(jìn)行顯式轉(zhuǎn)換時,格式模型對會話參數(shù)的選擇過程會對數(shù)據(jù)庫安全性產(chǎn)生負(fù)面影響。
動態(tài)構(gòu)造的 SQL 語句是指由程序或者存儲過程生成的 SQL 語句。執(zhí)行動態(tài)構(gòu)造的 SQL 語句,需要 OceanBase 內(nèi)置的 PL 包 ?DBMS_SQL
? 或與 PL 語句 ?EXECUTE IMMEDIATE
? 相關(guān),但這些并不是唯一執(zhí)行動態(tài)構(gòu)造的 SQL 文本的方式。
如下所示,?start_date
? 的數(shù)據(jù)類型為 ?DATE
?,使用會話參數(shù) ?NLS_DATE_FORMAT
? 中指定的格式模型將 ?start_date
? 的值轉(zhuǎn)換為文本,再將結(jié)果傳遞到 SQL 文本中。日期時間格式模型可以簡單地由雙引號所包含的文本組成。
SELECT last_name FROM employees WHERE hire_date > '' || start_date || '';
說明
為顯式轉(zhuǎn)換的格式模型設(shè)置全球化參數(shù)的用戶可以決定上述轉(zhuǎn)換產(chǎn)生了什么文本。
若 SQL 語句由過程執(zhí)行,則該過程的執(zhí)行可能會由于session變量的修改而被SQL注入。當(dāng)某些過程具有更高權(quán)限(例如Definer's Rights Procedure)時,造成的安全方面的影響可能更大。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: