


Comment puis-je transmettre plusieurs valeurs à un seul paramètre de fonction dans PostgreSQL ?
Utilisez les paramètres VARIADIC pour transmettre plusieurs valeurs dans un seul paramètre
Créer une fonction avec des paramètres VARIADIC
Afin de transmettre plusieurs valeurs à un seul paramètre, vous pouvez utiliser le type de données VARIADIC. Cela vous permet de spécifier un tableau de valeurs pour le paramètre. Modifiez la fonction suivante pour accepter un paramètre VARIADIC nommé job_ids :
CREATE OR REPLACE FUNCTION test_var(VARIADIC job_ids int[]) RETURNS TABLE ( job_id int, job_reference int, job_job_title text, job_status text ) AS $$ BEGIN RETURN QUERY SELECT jobs.id, jobs.reference, jobs.job_title, ltrim(right(jobs.status, -2)) AS status -- 使用right()函数改进字符串处理 FROM jobs INNER JOIN company c ON c.id = jobs.id -- 使用INNER JOIN改进查询效率 WHERE jobs."DeleteFlag" = '0' AND c.DeleteFlag = '0' AND c.active = '1' AND (jobs.id = ANY(job_ids) OR job_ids = '{ -1 }') -- 简化条件判断 ORDER BY jobs.job_title; END; $$ LANGUAGE plpgsql;
Fonction d'appel avec paramètres VARIADIC
Vous pouvez désormais appeler la fonction test_var en passant un tableau de valeurs au paramètre job_ids. Par exemple :
SELECT * FROM test_var('{270, 378}');
Cela renverra les données de travail avec les ID 270 et 378.
Améliorations des fonctions et suggestions supplémentaires
En plus d'utiliser le paramètre VARIADIC, vous pouvez également utiliser la fonction right()
en combinaison avec une longueur négative pour couper les caractères au début de la chaîne, ce qui est plus rapide et plus simple que d'utiliser substring
.
Assurez-vous également que le type de données de la colonne DeleteFlag
est booléen et non texte. Cela garantit une comparaison et une efficacité correctes.
Enfin, la fonction f_test fournie dans la réponse démontre une fonction SQL concise qui évite l'utilisation de PL/pgSQL et résout ces problèmes. Il est recommandé de choisir la méthode de mise en œuvre des fonctions appropriée en fonction des besoins réels.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Réduisez l'utilisation de la mémoire MySQL dans Docker

Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE?

Comment résoudre le problème de MySQL ne peut pas ouvrir la bibliothèque partagée

Exécutez MySQL dans Linux (avec / sans conteneur Podman avec phpmyadmin)

Exécuter plusieurs versions MySQL sur macOS: un guide étape par étape

Quels sont les outils de GUI MySQL populaires (par exemple, MySQL Workbench, PhpMyAdmin)?

Comment configurer le cryptage SSL / TLS pour les connexions MySQL?
