为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go 中为 PGSQL 函数提供参数

在 Go 中为 PGSQL 函数提供参数

Go
喵喔喔 2021-08-10 13:29:25
我正在尝试使用 db.QueryRow() 将参数传递给 Golang 中的以下函数,但是它似乎不接受通常的 ?。DROP FUNCTION IF EXISTS upsertplatform(pToken varchar);CREATE FUNCTION upsertplatform(pToken varchar) RETURNS int as $$    DECLARE        _id int = NULL;    BEGIN        LOOP            UPDATE public.platform SET platformToken = pToken WHERE userID = 3 AND platformID = 2 RETURNING id into _id;            IF NOT FOUND THEN                BEGIN                    INSERT INTO public.platform (userID, platformID, platformToken) VALUES (3, 2, '1234-123-bbasd') RETURNING id into _id;                EXCEPTION WHEN unique_violation THEN                        UPDATE public.platform SET platformToken = '1234-123-bbasd' WHERE userID = 3 AND platformID = 2 RETURNING id into strict _id;                END;            END IF;        EXIT WHEN _id IS NOT NULL;        END LOOP;    RETURN 1;    END$$ LANGUAGE PLPGSQL;这是我遇到问题的查询,我不确定如何将参数传递给它:res := db.QueryRow(`SELECT * FROM upsertplatform( ? )`, "test123")我该如何正确地做到这一点?
查看完整描述

1 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

Postgres 驱动程序对参数使用位置符号,$1、$2、... 所以只是SELECT * FROM upsertplatform($1).


查看完整回答
反对 回复 2021-08-10
  • 1 回答
  • 0 关注
  • 255 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信