Du har inte angett några detaljer om språket/miljön, men jag ska försöka en vild gissning ändå:
MySQL:s förberedda uttalanden använder naturligt ? som parameterplatshållare, men PostgreSQL använder $1 , $2 etc. Försök att ersätta ? med $1 och se om det fungerar:
WHERE address = $1
Felmeddelandena i PostgreSQL är mycket kryptiska.
I allmänhet har jag funnit att Postgres felmeddelanden är bättre än konkurrerande produkter (ahem, MySQL och särskilt Oracle), men i det här fallet har du lyckats förvirra parsern bortom förstånd. :)