Ik heb een stored function gemaakt in pgadmin:
Als ik die nu aanroep in de query editor:
Geeft hij prima een rij terug met "42".
Als ik nu dezelfde aanroep doe in C++ met libpq kan hij de functie niet vinden:
Dat geeft:
Maar op dezelfde manier, vanuit C++, zoiets:
werkt gewoon op de bestaande, standaard functie now(). De connectie werkt dus wel. Ik gewoon normale queries draaien.
Heeft iemand een idee hoe dit kan? Waarom kan hij geen enkele stored function vinden vanuit libpq met PQexec(), of PQexecParams(), terwijl dit WEL lukt in de pgadmin query editor?
SQL:
1
2
3
4
5
6
7
8
9
10
| CREATE OR REPLACE FUNCTION myfunc() RETURNS integer AS $$ BEGIN return 42; END; $$ LANGUAGE 'plpgsql' VOLATILE COST 100; ALTER FUNCTION myfunc() OWNER TO postgres; |
Als ik die nu aanroep in de query editor:
SQL:
1
| SELECT myfunc() |
Geeft hij prima een rij terug met "42".
Als ik nu dezelfde aanroep doe in C++ met libpq kan hij de functie niet vinden:
C++:
1
2
3
4
| ResultSetPtr res(PQexec( m_conn, "SELECT myfunc()" ), freeResultSet); |
Dat geeft:
code:
1
2
3
4
| ERROR: function myfunc() does not exist LINE 1: SELECT myfunc() ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. |
Maar op dezelfde manier, vanuit C++, zoiets:
C++:
1
2
3
4
| ResultSetPtr res(PQexec( m_conn, "SELECT now()" ), freeResultSet); |
werkt gewoon op de bestaande, standaard functie now(). De connectie werkt dus wel. Ik gewoon normale queries draaien.
Heeft iemand een idee hoe dit kan? Waarom kan hij geen enkele stored function vinden vanuit libpq met PQexec(), of PQexecParams(), terwijl dit WEL lukt in de pgadmin query editor?