2
在這個劇本我所期望的輸出是:的PostgreSQL使用變量名作爲字符串字面
NOTICE: 00000: Outside value is: hello
NOTICE: 00000: Inside value is: hello
但輸出是:
NOTICE: 00000: Outside value is: hello
NOTICE: 00000: Inside value is: my_variable
爲什麼PostgreSQL的使用變量的名字符串文字時傳遞給函數?注意我沒有在變量名稱周圍添加單引號,所以我沒有期待它被解釋爲字符串文字。
這裏是腳本:
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table(my_field text);
CREATE OR REPLACE FUNCTION my_function() RETURNS TRIGGER AS $$
BEGIN
RAISE NOTICE 'Inside value is: %', TG_ARGV[0];
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
DO $$
DECLARE
my_variable text := 'hello';
BEGIN
RAISE NOTICE 'Outside value is: %', my_variable;
CREATE TRIGGER my_trigger
AFTER INSERT ON my_table
FOR EACH ROW
EXECUTE PROCEDURE my_function(my_variable);
END
$$;
INSERT INTO my_table VALUES('some value');
哈!謝謝,我看了一個不太清楚的文檔頁面。 – MondKin