sql >> Databasteknik >  >> RDS >> PostgreSQL

Pl/pgSQL det finns ingen parameter $1 i EXECUTE-satsen

Du har ett par problem här. Det omedelbara problemet är:

Det händer eftersom $1 inuti SQL som du lämnar till EXECUTE är inte detsamma som $1 inuti huvudfunktionskroppen. De numrerade platshållarna i EXECUTE SQL är i kontexten av EXECUTE, inte i funktionens kontext så du måste ange några argument till EXECUTE för dessa platshållare:

execute '...' using dpol_cia, dpol_tipol, dpol_nupol, dpol_conse, dpol_date;
--            ^^^^^

Se Utföra dynamiska kommandon i manualen för detaljer.

Nästa problem är att du inte returnerar något från din funktion som RETURNS integer . Jag vet inte vad du tänker returnera men kanske din tablea har ett SERIELL id som du vill återvända. Om så är fallet, vill du ha något mer i stil med detta:

declare
    tabla text := 'dpol' || extract(year from $5::timestamp);
    id integer;
begin
    execute 'insert into ... values ($1, ...) returning id' into id using dpol_cia, ...;
    --                                        ^^^^^^^^^^^^  ^^^^^^^
    return id;
end

i din funktion.




  1. Laravel:hur man får genomsnitt på kapslade hasMany relationer (hasManyThrough)

  2. Vad är det korrekta och säkra/säkra sättet att hålla en användare inloggad? småkakor? session? PHP &&MYSQL

  3. Är ett index klustrat eller oklustrat i Oracle?

  4. Hur använder man en PostgreSQL-behållare med befintliga data?