PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Нито една функция не съответства на даденото име и типове аргументи

Вашата функция има няколко smallint параметри.
Но в извикването използвате числови литерали, за които се предполага, че са от тип integer .

Низов литерал или низова константа ('123' ) не се въвежда веднага. Остава тип "неизвестен", докато не бъде назначен или изрично прехвърлен.

Обаче числов литерал или числова константа се въвежда незабавно. Ръководството:

Числова константа, която не съдържа нито десетична запетая, нито анекспонента, първоначално се предполага, че е тип integer ако стойността му отговаря на тип integer (32 бита); в противен случай се предполага, че е типbigint ако стойността му отговаря на тип bigint (64 бита); в противен случай се счита, че е тип numeric . Константите, които съдържат десетични точки и/или експоненти, винаги първоначално се предполагат, че са тип numeric .

Вижте също:

  • ГРЕШКА в PostgreSQL:функция to_tsvector(променлив знак, неизвестен) не съществува

Решение

Добавете изрични прехвърляния за smallint параметри или предават литерали в кавички (невписани).

Демо

CREATE OR REPLACE FUNCTION f_typetest(smallint)
  RETURNS bool AS 'SELECT TRUE' LANGUAGE sql;

Неправилно обаждане:

SELECT * FROM f_typetest(1);

Правилни повиквания:

SELECT * FROM f_typetest('1');
SELECT * FROM f_typetest(smallint '1');
SELECT * FROM f_typetest(1::int2);
SELECT * FROM f_typetest('1'::int2);

db<>цигулка тук
Стар sqlfiddle.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да актуализирам избрани редове със стойности от CSV файл в Postgres?

  2. Rails 3.1 - Натискане към Heroku - Грешки при инсталиране на postgres адаптер?

  3. Комбиниране на изрази INSERT в CTE за модифициране на данни с израз CASE

  4. базата данни за преименуване на postgres не работи

  5. ИЗПУСКАНЕ ТАБЛИЦА, АКО СЪЩЕСТВУВА Пример в PostgreSQL