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

Postgresql cố gắng sử dụng định dạng thực thi trong một hàm nhưng nhận được lỗi không tìm thấy cột khi cung cấp định dạng chuỗi trong liên kết

Điều này có thể làm những gì bạn đang tìm kiếm:

CREATE OR REPLACE FUNCTION foo(_t text)
  RETURNS TABLE (Stage_ID bigint, Date varchar) AS
$func$
   SELECT t.Stage_ID, t.Date
   FROM   tbl t
   WHERE  t.Date = _t::date;
$func$  LANGUAGE sql;
  • Biểu thức where to_date(Date, "YYYY-MM-DD")==%I',_t); ngược theo nhiều cách.

    • Các dấu ngoặc kép cho giá trị :'YYYY-MM-DD' .
    • Toán tử là = , không phải == .
    • Có vẻ như bạn thực sự muốn t.Date = to_date(_t, 'YYYY-MM-DD')
    • Và trong khi _t ở dạng ISO tiêu chuẩn 'YYYY-MM-DD', thay vào đó chỉ truyền:t.Date = _t::date .
  • Tên cột đầu ra có thể nhìn thấy bên trong thân hàm. Cột điều kiện bảng cùng tên. Tốt hơn hết, hãy tránh đặt tên xung đột như vậy để bắt đầu! Xem:

  • Không cần SQL động với EXECUTE . Việc chuyển một giá trị dữ liệu chỉ hoạt động với SQL thuần túy.

  • Không cần plpgsql. Truy vấn đơn giản không yêu cầu bất kỳ chức năng thủ tục nào. LANGUAGE sql thực hiện công việc - nếu bạn cần một chức năng nào đó, thì SQL thuần túy có vẻ phù hợp với công việc.

Ngoài ra:không sử dụng tên loại cơ bản như "ngày" làm định danh. Bám sát vào số nhận dạng hợp pháp, viết thường. Có liên quan:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hiển thị Tổng số Hàng tháng từ Nhiều Cột trong PostgreSQL

  2. Lỗi khi cài đặt Psycopg2 trên MacOS 10.9.5

  3. SQL động (EXECUTE) làm điều kiện cho câu lệnh IF

  4. PostgreSQL trên Docker:Cách cài đặt và chạy các phần phụ thuộc của python trong `plpython3u`?

  5. Làm cách nào để có chức năng ngoại tuyến hoàn chỉnh trong ứng dụng web với cơ sở dữ liệu PostgreSQL?