Giải thích là, theo hướng dẫn sử dụng :
Phần thân của DO
câu lệnh là một chuỗi được trích dẫn bằng đô la. Vì vậy, không có nội suy bên trong chuỗi.
Vì nó phải là một chuỗi theo nghĩa đen, bạn cũng không thể nối các chuỗi một cách nhanh chóng. Hướng dẫn:
Nhưng bạn có thể nối chuỗi và sau đó thực thi nó.
Tôi nhấn mạnh đậm. Bạn chỉ cần lấy đúng trích dẫn:
test=# \set test 'some value'
test=# \set code 'DECLARE v_test text := ' :'test' '; BEGIN RAISE NOTICE ''test var is: %'', v_test; END'
test=# DO :'code';
NOTICE: test var is: some value
DO
test=#
Nhưng tôi muốn tạo một hàm (tạm thời) và chuyển giá trị làm tham số (nơi nội suy psql hoạt động). Chi tiết trong câu trả lời liên quan này trên dba.SE: