Heim >Datenbank >MySQL-Tutorial >Wie kann ich in PostgreSQL mehrere Werte an einen einzelnen Funktionsparameter übergeben?
Um mehrere Werte an einen einzelnen Parameter zu übergeben, können Sie den Datentyp VARIADIC verwenden. Dadurch können Sie ein Array von Werten für den Parameter angeben. Ändern Sie die folgende Funktion, um einen VARIADIC-Parameter namens job_ids zu akzeptieren:
<code class="language-sql">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;</code>
Sie können jetzt die Funktion test_var aufrufen, indem Sie ein Array von Werten an den Parameter job_ids übergeben. Zum Beispiel:
<code class="language-sql">SELECT * FROM test_var('{270, 378}');</code>
Dadurch werden Jobdaten mit den IDs 270 und 378 zurückgegeben.
Zusätzlich zur Verwendung des Parameters VARIADIC können Sie auch die Funktion right()
in Kombination mit einer negativen Länge verwenden, um Zeichen am Anfang der Zeichenfolge zu kürzen, was schneller und einfacher ist als die Verwendung von substring
.
Stellen Sie außerdem sicher, dass der Datentyp der Spalte DeleteFlag
boolesch und nicht Text ist. Dies gewährleistet einen korrekten Vergleich und Effizienz.
Schließlich demonstriert die in der Antwort bereitgestellte f_test-Funktion eine prägnante SQL-Funktion, die die Verwendung von PL/pgSQL vermeidet und diese Probleme löst. Es wird empfohlen, die geeignete Funktionsimplementierungsmethode basierend auf den tatsächlichen Anforderungen auszuwählen.
Das obige ist der detaillierte Inhalt vonWie kann ich in PostgreSQL mehrere Werte an einen einzelnen Funktionsparameter übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!