PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Không có hàm nào phù hợp với các loại đối số và tên đã cho

Hàm của bạn có một vài smallint tham số.
Nhưng trong cuộc gọi, bạn đang sử dụng các ký tự số được cho là kiểu integer .

Một chuỗi ký tự hoặc chuỗi ký tự ('123' ) không được nhập ngay lập tức. Nó vẫn là loại "không xác định" cho đến khi được gán hoặc truyền một cách rõ ràng.

Tuy nhiên, một ký tự số hoặc hằng số được gõ ngay lập tức. Hướng dẫn sử dụng:

Một hằng số không chứa dấu thập phân cũng không phải là số nguyên được ban đầu được cho là kiểu integer nếu giá trị của nó có lợi trong loại integer (32 bit); nếu không nó được coi là loại bigint nếu giá trị của nó phù hợp với kiểu bigint (64 bit); nếu không, nó được coi là loại numeric . Các hằng số chứa dấu thập phân và / orexponents ban đầu luôn được coi là loại numeric .

Cũng xem:

  • LỖI PostgreSQL:hàm to_tsvector (ký tự thay đổi, không xác định) không tồn tại

Giải pháp

Thêm phôi rõ ràng cho smallint tham số hoặc chuyển các ký tự được trích dẫn (không định kiểu).

Bản trình diễn

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

Cuộc gọi không chính xác:

SELECT * FROM f_typetest(1);

Các cuộc gọi đúng:

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

db <> fiddle here
Sqlfiddle cũ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thư viện không được tải:/usr/local/opt/readline/lib/libreadline.6.2.dylib

  2. Có nhóm theo điều khoản - elein’s GeneralBits

  3. Làm cách nào để sử dụng truy vấn có trình giữ chỗ bên trong dấu ngoặc kép? (perl / postgresql)

  4. PostgreSQL Streaming vs Logical Replication - So sánh

  5. Kiểu dữ liệu nào cho vĩ độ và kinh độ?