Ich habe eine Funktion und innerhalb dieser Funktion erstelle ich Variablen. Ich möchte die erstellte Variable als Schwellenwert für die Filterung verwenden.Referenzvariable in PL/pgSQL Funktion
CREATE OR REPLACE FUNCTION someF(a integer, b integer, c integer)
RETURNS void AS
$$
DECLARE
problematicVariable float := $1/$2;
BEGIN
FOR i in 1 .. $3:
CREATE TABLE IF NOT EXISTS someTable AS
SELECT someFunction(
'SELECT id,
FROM yetAnotherTable st
WHERE st.agg <= problematicVariable')
END LOOP;
END
$$
language 'plpgsql';
Allerdings erhalte ich die Fehlermeldung, dass:
ERROR: column "problematicVariable" does not exist
Wie würde ich Postgres sagen, dass dies nicht eine Spalte, sondern eine Variable I in dem Funktionskörper erstellt?
'WHERE st.agg <= '|| problematicVariable) ' –
Das Referenzieren einer Variablen ist das kleinste Ihrer Probleme. Division durch Null, Division durch Integer, 'SELECT' anstelle von' SELECT * ', wiederholte' CREATE TABLE' mit demselben Tabellennamen ... Ihr Ansatz ist ein großes Durcheinander. –