Je veux créer une fonction qui accepte le paramètre d'entrée comme ci-dessous:Fonction mettre à jour les enregistrements de JSON dans Postgres
[
{
"id": 1,
"organization_name": "Test Solutions",
"website": "[www..test.solutions]",
"contact_person": "John Doe"
}
]
je peux mettre à jour les enregistrements de la simple requête dans pgAdminIII il ne m'a pas donné n'importe quelle erreur mais il n'y a aucun autre moyen d'utiliser cette requête autre que la fonction dans JPA qui prendra une entrée dans une requête. Ci-dessous est ma requête de mise à jour:
UPDATE organization p
SET (organization_name,emails,contacts,relation_type_id,website,cst_no,vat_tin_no,contact_person)=
(COALESCE(ab.organization_name, p.organization_name)
,COALESCE(ab.website, p.website)
,COALESCE(ab.contact_person, p.contact_person)
)
FROM (
select * from json_populate_recordset
(null::organization,'[{"id":1,"organization_name":"Test Solutions","website":"[www..test.solutions]","contact_person":"John Doe"}]')
) ab
WHERE p.id = ab.id;
Comment puis-je créer une fonction JPA qui travaillera en passant JSON comme indiqué ci-dessus:
J'ai essayé une fonction qui me donne l'erreur que je passe le paramètre. est inférieure à la syntaxe de la fonction:
CREATE OR REPLACE FUNCTION cloudschema.org_bulk_edit_json(IN j json)RETURNS SETOF record AS
$BODY$
BEGIN
UPDATE cloudschema.organization p
SET (organization_name,emails,contacts,relation_type_id,website,cst_no,vat_tin_no,contact_person)=
(COALESCE(ab.organization_name, p.organization_name)
,COALESCE(ab.website, p.website)
,COALESCE(ab.contact_person, p.contact_person)
)
FROM (
select * from json_populate_recordset
(null::cloudschema.organization,$1)
) ab
WHERE p.id = ab.id;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
Quelle est l'erreur que vous obtenez et comment appelez-vous exactement votre fonction? –