小编Jos*_*ues的帖子

使用函数更新PostgreSQL表中的数组

我正在尝试使用函数更新PostgreSQL表.

我的功能:

CREATE OR REPLACE FUNCTION update_array_words(varchar, varchar[], int[], int, int)
RETURNS int AS $$

DECLARE
  passed int;
  j int;
  k int;

BEGIN
  passed := 0;
  j := $4 + $5;
  k := 0;
  FOR i IN $4..j LOOP
    UPDATE tab_files
    SET key_words[i] = $2[k], num_key_words[i] = $3[k]
    WHERE path_to_file = $1;
  END LOOP;

  RETURN passed;
END;

$$
LANGUAGE plpgsql
;
Run Code Online (Sandbox Code Playgroud)

为了调用我的函数:

 SELECT update_array_words('path_name_to_file', '{"susana"}', '{1}', 1, 1);
Run Code Online (Sandbox Code Playgroud)

问题是,当我在PostgreSQL命令行中进行简单的选择时,来自更新的数据是null.

我的选择:

SELECT * FROM tab_files;
Run Code Online (Sandbox Code Playgroud)

输出:

          key_words                      num_key_words
| …
Run Code Online (Sandbox Code Playgroud)

postgresql sql-update

11
推荐指数
1
解决办法
459
查看次数

从命令行创建 PostgreSQL 函数

我正在尝试创建一个函数,允许我在数据库中执行多个查询。这是我第一次尝试使用命令行来实现此目标。我正在 Linux 系统(Ubuntu)中工作,使用 PostgreSQL。

我的 Pgsql:

create function my_function(idteste integer, nome character varying, tipo integer, morada character varying, cpostal character varying, telefone character varying, nif character varying, nacionalidade character varying, iban character varying, moradaimag character varying, cc1 character varying, ccimage1 character varying, ccimage2 character varying, datanascimento date)
returns character varying as $tempvar$
declare tempvar character varying;
begin
tempvar := 'null';
if (select count(id_teste) from singulares where id_idteste=idteste) = 0 then
update pessoas set  
nome_pessoal=nome,
tipo_pesoal = tipo,     
morada_pessoal=morada,
cpostal_pessoal=cpostal,
telefone_pessoal=telefone, …
Run Code Online (Sandbox Code Playgroud)

postgresql

1
推荐指数
1
解决办法
2374
查看次数

标签 统计

postgresql ×2

sql-update ×1