Tôi không thể tìm thấy giải thích rõ ràng về cú pháp để tạo (và sử dụng) các bảng chỉ dành cho các phép tính bên trong của một hàm. Bất cứ ai có thể cho tôi một ví dụ cú pháp xin vui lòng?Chức năng postgresql bảng tạm thời
Từ những gì tôi đã tìm thấy, tôi đã cố gắng này (có và không có @
trước temp_table
):
CREATE FUNCTION test.myfunction()
RETURNS SETOF test.out_table
AS $$
DECLARE @temp_table TABLE
(
id int,
value text
)
BEGIN
INSERT INTO @temp_table
SELECT id, value
FROM test.another_table;
INSERT INTO test.out_table
SELECT id, value
FROM @temp_table;
RETURN END
$$ LANGUAGE SQL;
tôi nhận được:
ERROR: syntax error at or near "DECLARE" LINE 5: DECLARE @temp_table TABLE
-
Tôi cũng đã thử Phương pháp TẠO TẠO đề xuất here, theo cách này:
CREATE FUNCTION test.myfunction()
RETURNS SETOF test.out_table
AS $$
CREATE TABLE temp_table AS
SELECT id, value
FROM test.another_table;
INSERT INTO test.out_table
SELECT id, value
FROM temp_table;
$$ LANGUAGE SQL;
Và tôi có được điều này:
ERROR: relation "temp_table " does not exist LINE 11: FROM temp_table
(Rõ ràng, Tôi biết các temp_table là không cần thiết cho những gì tôi đang làm trong đoạn mã trên, nhưng đó không phải là điểm :) => Tôi muốn để hiểu được cú pháp để làm cho nó làm việc)
Postgres sử dụng bảng tạm thời cho mục đích này. Các biến bảng là một tính năng của SQL Server. –
Trong tài liệu hướng dẫn nào bạn tìm thấy cú pháp 'DECLARE @temp_table TABLE ...'? –