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

PL / pgSQL thực hiện so với thực thi

PERFORM là lệnh plpgsql được sử dụng để gọi các hàm void. PLpgSQL cẩn thận về SELECT vô dụng câu lệnh - SELECT không có INTO mệnh đề không được phép. Nhưng đôi khi bạn cần gọi một hàm và bạn không cần lưu trữ kết quả (hoặc các hàm không có kết quả). Hàm trong SQL được gọi bằng SELECT bản tường trình. Nhưng không thể thực hiện được trong PLpgSQL - vì vậy lệnh PERFORM đã được giới thiệu.

CREATE OR REPLACE FUNCTION foo()
RETURNS void AS $$
BEGIN
  RAISE NOTICE 'Hello from void function';
END;
$$ LANGUAGE plpgsql;

-- direct call from SQL
SELECT foo();

-- in PLpgSQL
DO $$
BEGIN
  SELECT foo(); -- is not allowed
  PERFORM foo(); -- is ok
END;
$$;

PERFORM câu lệnh thực thi một tham số và quên kết quả.

Ví dụ của bạn perform 'create table foo as (select 1)';

giống như SELECT 'create table foo as (select 1)' . Nó trả về một chuỗi "tạo bảng foo dưới dạng (chọn 1)" và chuỗi này bị hủy.

EXECUTE câu lệnh đánh giá một biểu thức để lấy chuỗi. Trong bước tiếp theo, chuỗi này được thực thi.

Vì vậy, EXECUTE 'create table ' || some_var || '(a int)'; có hai bước

  1. đánh giá biểu thức 'create table ' || some_var || '(a int)'
  2. if some_var là mytab chẳng hạn, sau đó thực hiện lệnh create table mytab(a int)

PERFORM câu lệnh được sử dụng cho các cuộc gọi hàm, khi các hàm không được sử dụng trong câu lệnh gán. EXECUTE được sử dụng để đánh giá SQL động - khi một dạng lệnh SQL được biết đến trong thời gian chạy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể xóa cơ sở dữ liệu

  2. Sự cố với máy chủ rails

  3. Cách sử dụng array_agg () cho varchar []

  4. Danh sách gần kề thành biểu đồ JSON với Postgres

  5. Làm thế nào để hợp nhất kết xuất vào cơ sở dữ liệu từ PostgreSQL?