Trước đây, Postgresql không hỗ trợ mã thủ tục ở cấp lệnh - chỉ trong các hàm. Tuy nhiên, trong Postgresql 9, hỗ trợ đã được thêm vào để thực thi một khối mã nội tuyến hỗ trợ hiệu quả một cái gì đó như thế này, mặc dù cú pháp có lẽ hơi kỳ quặc và có nhiều hạn chế so với những gì bạn có thể làm với SQL Server. Đáng chú ý, khối mã nội tuyến không thể trả về tập hợp kết quả, vì vậy không thể được sử dụng cho những gì bạn phác thảo ở trên.
Nói chung, nếu bạn muốn viết một số mã thủ tục và nó trả về kết quả, bạn cần phải đặt nó bên trong một hàm. Ví dụ:
CREATE OR REPLACE FUNCTION somefuncname() RETURNS int LANGUAGE plpgsql AS $$
DECLARE
one int;
two int;
BEGIN
one := 1;
two := 2;
RETURN one + two;
END
$$;
SELECT somefuncname();
Giao thức dây PostgreSQL, theo như tôi biết, không cho phép những thứ như lệnh trả về nhiều tập kết quả. Vì vậy, bạn không thể chỉ ánh xạ các lô T-SQL hoặc các thủ tục được lưu trữ với các hàm PostgreSQL.