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

Có cách nào để thực thi truy vấn bên trong giá trị chuỗi (như eval) trong PostgreSQL không?

Nếu các câu lệnh bạn đang cố gắng "eval" luôn trả về cùng một kiểu dữ liệu, bạn có thể viết một hàm eval () sử dụng EXECUTE được Grzegorz đề cập.

create or replace function eval(expression text) returns integer
as
$body$
declare
  result integer;
begin
  execute expression into result;
  return result;
end;
$body$
language plpgsql

Sau đó, bạn có thể làm một cái gì đó như

SELECT eval('select 41') + 1;

Nhưng cách tiếp cận này sẽ không hoạt động nếu các câu lệnh động của bạn trả lại một cái gì đó khác nhau cho mỗi biểu thức mà bạn muốn đánh giá.

Cũng nên nhớ rằng điều này mở ra một rủi ro bảo mật lớn khi chạy các câu lệnh tùy ý. Nếu đó là một vấn đề phụ thuộc vào môi trường của bạn. Nếu điều đó chỉ được sử dụng trong các phiên SQL tương tác thì đó không phải là vấn đề.



  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 thế nào để hiển thị hàm, thủ tục, kích hoạt mã nguồn trong postgresql?

  2. PostgreSQL đang trỗi dậy:Phát hiện Postgres 2018 &Xu hướng 2019

  3. Mẹo và thủ thuật của Postgres

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

  5. Hành tinh PostgreSQL trong Thiên hà Ansible