Tôi muốn sử dụng SELECT INTO
để tạo một bảng tạm thời theo một trong các chức năng của tôi. SELECT INTO
hoạt động trong SQL chứ không phải PL/pgSQL.SELECT .. INTO để tạo một bảng trong PL/pgSQL
Lệnh này tạo một bảng gọi là mytable (Nếu orig_table
tồn tại như một mối quan hệ):
SELECT *
INTO TEMP TABLE mytable
FROM orig_table;
Nhưng đưa chức năng này vào PostgreSQL, và bạn nhận được lỗi: ERROR: "temp" is not a known variable
CREATE OR REPLACE FUNCTION whatever()
RETURNS void AS $$
BEGIN
SELECT *
INTO TEMP TABLE mytable
FROM orig_table;
END; $$ LANGUAGE plpgsql;
tôi có thể SELECT INTO
một biến loại record
trong PL/pgSQL, nhưng sau đó tôi phải xác định cấu trúc khi lấy dữ liệu ra khỏi bản ghi đó. SELECT INTO
thực sự đơn giản - tự động tạo một bảng có cùng cấu trúc truy vấn SELECT
. Có ai có bất kỳ lời giải thích cho lý do tại sao điều này không hoạt động bên trong một chức năng?
Có vẻ như SELECT INTO
hoạt động khác với PL/pgSQL, vì bạn có thể chọn các biến mà bạn đã khai báo. Tuy nhiên, tôi không muốn khai báo cấu trúc bảng tạm thời của mình. Tôi ước nó sẽ tạo ra cấu trúc tự động giống như trong SQL.
Cảm ơn! Tôi biết tôi đã giải quyết vấn đề này trước đây, và tôi nhớ câu đó từ các tài liệu postgresql. Tôi đã hoàn toàn quên về CREATE TABLE AS. – nnyby
Điều đó khiến tôi hoàn toàn bối rối một chút - cảm ơn. – mvexel