[發明專利]一種支持動態變量的函數式SQL查詢方法、裝置、設備和介質有效
| 申請號: | 202010650476.5 | 申請日: | 2020-07-08 |
| 公開(公告)號: | CN111984669B | 公開(公告)日: | 2023-06-27 |
| 發明(設計)人: | 黃家昌;林鑫;楊輝;邱道椿 | 申請(專利權)人: | 福建億能達信息技術股份有限公司 |
| 主分類號: | G06F16/242 | 分類號: | G06F16/242;G16H50/70 |
| 代理公司: | 福州市京華專利代理事務所(普通合伙) 35212 | 代理人: | 林云嬌 |
| 地址: | 350000 福建省福州市鼓樓*** | 國省代碼: | 福建;35 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 支持 動態 變量 函數 sql 查詢 方法 裝置 設備 介質 | ||
1.一種支持動態變量的函數式SQL查詢方法,其特征在于:包括下述步驟:
S1、將包含動態變量的函數式SQL的公式傳遞給腳本參數提取器,由所述腳本參數提取器從公式中提取出參數頭標志、參數體標志和參數體內容傳遞給腳本參數解析器,其中的動態變量存在于參數體內容中;所述函數式SQL的公式為:參數頭標志+參數體標志中的起始標志+參數名+:+含有動態變量標志的SQL腳本片段+參數體標志中的結束標志;
所述參數頭標志包括$、@、#,其中,$代表參數體內的動態變量值為單項,@代表參數體內的動態變量值為多項,#代表參數塊內的動態變量值為函數計算得出;
參數體標志中包括[]和{},其中,[]代表參數體內的動態變量非必填,{}代表參數體內的動態變量為必填,[和{為起始標志,]和}為結束標志;
所述動態變量標志為!{};
S2、所述腳本參數解析器接收到所述腳本參數提取器發送的內容時,解析參數體標志,解析參數頭標志的類型并對參數體內容中的動態變量值做如下分類處理:
當解析得到參數頭標志的類型為單參數值類型時,則獲取參數體內容,直接將參數體內容中的動態變量值設置為用戶輸入的變量值;
當解析得到參數頭標志的類型為多參數值類型時,則獲取參數體內容,將參數體內容中的動態變量值轉化為SQL中的IN模式的靜態值,所述SQL中的IN模式的靜態值指:將動態變量值變為靜態值,并去除內置標志,變為數據庫中的包含IN的sql腳本片段,從而生成數據庫能識別的sql語法;
當解析得到參數頭標志的類型為函數類型時,則獲取參數體內容,轉交給腳本參數函數執行器執行此段函數并接收函數執行結果,將該函數執行結果替換參數體內容中的動態變量值;
至此所述腳本參數解析器得到公式對應的sql片段,并將該sql片段傳遞給腳本生成器;
所述解析參數體標志具體是:
先判斷參數體標志是選填類型還是必填類型;
若參數體標志為選填類型標志時,若參數值為空,則跳過此參數體,不做任何操作,若參數值為非空,則獲取參數體內容,以對動態變量做所述分類處理;
若參數體標志為必填類型標志時,且參數值為空,則處理為異常,若參數值為非空,則獲取參數體內容,以對動態變量做所述分類處理;
S3、所述腳本生成器在收到所述sql片段回填到SQL中,從而生成數據庫能直接執行的SQL查詢語言,經數據庫直接執行后即可獲得SQL查詢結果。
2.根據權利要求1所述的一種支持動態變量的函數式SQL查詢方法,其特征在于:所述參數頭標志包括:
單參數值類型標志,代表此參數頭標志后的參數體內容的動態變量所對應的值的個數為一個;
多參數值類型標志,代表此參數頭標志后的參數體內容的動態變量所對應的值的個數為多個;
函數類型標志,代表此參數頭標志后的參數體內容的動態變量所對應的值是一段函數。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于福建億能達信息技術股份有限公司,未經福建億能達信息技術股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010650476.5/1.html,轉載請聲明來源鉆瓜專利網。





