我创建了一个postgres sql函数,它执行truncate然后将行插入表中。以下是功能
CREATE OR REPLACE FUNCTION reset_Default()
RETURNS VOID AS '
BEGIN
TRUNCATE TABLE details;
INSERT INTO details values('car',2);
INSERT INTO details values('bus',4);
RETURN;
END;
' LANGUAGE 'plpgsql';
但是我得到了以下错误
错误:“car”或附近的语法错误 第6行:价值观('汽车',2 ^ 创造功能
错误:无法更改现有功能的返回类型
提示:首先使用DROP FUNCTION。
我能知道原因吗?
答案 0 :(得分:1)
为什么单引你的功能主体?虽然这可能会起作用,但它可能会导致您遇到的问题。由于wildplasser州使用美元符号。然后你的函数将编译好。
例如
CREATE OR REPLACE FUNCTION reset_Default()
RETURNS VOID AS $$
BEGIN
TRUNCATE TABLE details;
INSERT INTO details values('car',2);
INSERT INTO details values('bus',4);
RETURN;
END;
$$ LANGUAGE plpgsql;
答案 1 :(得分:0)
您需要将字符串中的单引号加倍。所以:
CREATE OR REPLACE FUNCTION reset_Default()
RETURNS VOID AS '
BEGIN
TRUNCATE TABLE details;
INSERT INTO details(col1, col2) values(''car'',2); -- use actual column names
INSERT INTO details(col1, col2) values(''bus'',4);
RETURN;
END;
' LANGUAGE 'plpgsql'