postgres sql函数,带截断和插入

时间:2017-06-21 12:18:25

标签: postgresql

我创建了一个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。

我能知道原因吗?

2 个答案:

答案 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'