亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 nil/null 參數傳遞給存儲函數?

如何將 nil/null 參數傳遞給存儲函數?

Go
UYOU 2023-08-21 14:48:40
服務器收到GET帶有territory_id參數的請求。nil如果用戶不需要按地區過濾,則該參數可以是,或者integer如果用戶只想獲取特定地區的記錄,則可以有一個數字。代碼:func GetDataList (response http.ResponseWriter, request * http.Request) {    params: = GetRequestParams (request.URL.Query ())    normalID, _: = strconv.Atoi (params ["normal_id"])    territoryId, _: = strconv.Atoi (params ["territory_id"])    var listToCheck [] ObjectDataNormal    query = `select * from get_list_for_predict (year: = $1, territory_in: = $2)`    rows, err = db.Queryx (query,        2011,        territoryId)    if rows! = nil {            // code    }    // code}func GetRequestParams (values url.Values) map [string] string {    urlValues: = make (map [string] string, len (values))    for k, v: = range values   {        urlValues   [k] = v [0]    }    return urlValues}postgresql中的存儲過程是這樣設計的,如果territory_inis ISNULL,則該參數的過濾器不起作用,否則,如果territory_inis 等于 5,例如,將記錄 Region 字段中值為 5 的記錄。以及如何在服務器端實現這一點?如果我輸入territory_id = nil郵遞員,我會得到:ERROR: invalid input syntax for integer: "nil"如果為空,則:ERROR: invalid input syntax for integer: "null".也territroyID不可能相等nil。如何根據用戶請求將 null 傳遞給函數?理論上我可以檢查郵資功能territory_in = 0,而不是IS NULL。因為當將 a 轉換string為int( strconv.Atoi (params ["territory_id"]))時territory_in,它將被設置為 0。但是我想知道如何將 null 參數發送到 golang 中的存儲函數?我使用 sqlx 和 pgx。
查看完整描述

1 回答

?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

如果您保存territoryId為 a*int而不是int,則可以通過nil:


func strToIntPtr(s string) *int {

    i, err := strconv.Atoi(s)

    if err != nil {

        return nil

    }

    return &i 

}


territoryId := strToIntPtr(params["territory_id"])

然后任何territoryId時候nil它都不是有效的int。因此,它們可以傳遞nil、null、 或any(或任何非數字的內容),而您只需將其視為null。


查看完整回答
反對 回復 2023-08-21
  • 1 回答
  • 0 關注
  • 185 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號