我正在尝试使用函数更新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) 我正在尝试创建一个函数,允许我在数据库中执行多个查询。这是我第一次尝试使用命令行来实现此目标。我正在 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)