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

Tham số psql tham chiếu bên trong khối ẩn danh PL / pgSQL

psql trình phân tích cú pháp không thể nhìn thấy những gì bên trong chuỗi. Đây có thể là những gì bạn muốn:

delete from t
where :para = 1

Làm điều đó bên ngoài một khối ẩn danh. Nếu bạn thực sự cần PL/pgSQL sử dụng một hàm được tham số hóa:

create or replace function f(_para integer)
returns void as $$
begin
    if _para = 1 then
        --statements
    end if;
end; $$ language plpgsql;

Và tệp script của bạn sẽ có:

select f(:para);

Nếu bạn không muốn thêm vĩnh viễn một hàm vào db, hãy làm tất cả bên trong script:

drop function if exists f_iu7YttW(integer);

create or replace function f_iu7YttW(_para integer)
returns void as $$
begin
    if _para = 1 then
        --statements
    end if;
end; $$ language plpgsql;

select f_iu7YttW(:para);

drop function f_iu7YttW(integer);

Đặt tên duy nhất cho hàm để bạn không gặp rủi ro bỏ sót thứ khá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. Làm cách nào để lấy tên và kiểu cột từ truy vấn PostgreSQL (mà không cần chạy nó)?

  2. Hiệu suất OLTP kể từ PostgreSQL 8.3

  3. Tạo cơ sở dữ liệu PostgreSQL nhanh chóng bằng Hibernate ngay cả khi DB không tồn tại

  4. Làm cách nào để bạn làm cho Python / PostgreSQL nhanh hơn?

  5. Khóa chính với thứ tự ASC hoặc DESC?