加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Postgres整数数组作为参数?

发布时间:2020-12-13 16:38:25 所属栏目:百科 来源:网络整理
导读:我明白,在Postgres pure中,您可以将整数数组传递给一个函数,但.NET数据提供者Npgsql中不支持该数组。 我目前有一个DbCommand,我将一个调用加载到一个存储的proc中,添加一个参数并执行标量来获取一个Id来填充一个对象。 现在需要以n个整数作为参数。这些
我明白,在Postgres pure中,您可以将整数数组传递给一个函数,但.NET数据提供者Npgsql中不支持该数组。

我目前有一个DbCommand,我将一个调用加载到一个存储的proc中,添加一个参数并执行标量来获取一个Id来填充一个对象。

现在需要以n个整数作为参数。这些用于创建将新创建的记录链接到整数参数的子记录。

理想情况下,我宁可不必在每个整数的DbCommand上进行多个ExecuteNonQuery调用,所以我要构建一个csv字符串作为在数据库端分割的参数。

我通常生活在LINQ 2 SQL中,享受Db抽象,通过手工数据访问来处理这个项目,人们通常会将这些参数传递给postgres?

见: http://www.postgresql.org/docs/9.1/static/arrays.html

如果您的非本机驱动程序仍然不允许您传递数组,那么您可以:

传递数组的字符串表示(您的存储过程可以解析为数组 – 请参阅string_to_array)

CREATE FUNCTION my_method(TEXT) RETURNS VOID AS $$ 
DECLARE
       ids INT[];
BEGIN
       ids = string_to_array($1,',');
       ...
END $$ LANGUAGE plpgsql;

然后

SELECT my_method(:1)

与:1 =’1,2,3,4′
>依靠Postgres本身将一个字符串转换为一个数组

CREATE FUNCTION my_method(INT[]) RETURNS VOID AS $$ 
       ...
END $$ LANGUAGE plpgsql;

然后

SELECT my_method('{1,4}')

>选择不使用绑定变量并发出明确的命令字符串,并将所有参数拼写出来(请确保验证或转义来自外部的所有参数,以避免SQL注入攻击。)

CREATE FUNCTION my_method(INT[]) RETURNS VOID AS $$ 
       ...
END $$ LANGUAGE plpgsql;

然后

SELECT my_method(ARRAY [1,4])

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读