2015-06-20 21 views
2

這個函數有什麼問題? 編輯>>PostgreSQL函數函數定義的意外結束

CREATE OR REPLACE FUNCTION on_ai_myTable() RETURNS TRIGGER AS $$ 

BEGIN 
SELECT fn_name, count(*) + 1 FROM table_ebscb_spa_log02 WHERE time_type = 'Start' GROUP BY fn_name 
RETURN NEW.fn_name; 
END 
$$ 
LANGUAGE plpgsql; 

好的,我加了「;」但現在,當我嘗試創建它時,它向我發送ERROR:在「RETURN」處或附近的語法錯誤消息。LINE 5:RETURN fn_name;

我該如何解決?

謝謝先進。

回答

2

你只需要添加分號:

CREATE OR REPLACE FUNCTION on_ai_myTable() RETURNS TRIGGER AS $$ 

BEGIN 
SELECT fn_name, count(*) + 1 FROM table_ebscb_spa_log02 WHERE time_type = 'Start' GROUP BY fn_name; 
RETURN NEW.fn_name; 
END 
$$ 
LANGUAGE plpgsql; 
+0

嗨user_0你能幫我解決這個問題嗎?也與postgreSQL有關,我有一個腳本http://stackoverflow.com/questions/30942869/insert-a-number-in-a-column-based-on-other-columns-old-inserts – Natysiu16

+0

順便說一句,請檢查我編輯了這個問題,發生了其他事情。希望我不要濫用你的支持,我非常感謝 – Natysiu16

1

您需要在SELECT語句末尾結束之後的分號,而另一個分號:

CREATE OR REPLACE FUNCTION on_ai_myTable() RETURNS TRIGGER AS $$ 
    BEGIN 
    SELECT fn_name, count(*) + 1 FROM table_ebscb_spa_log02 WHERE time_type = 'Start' GROUP BY fn_name; 
    RETURN NEW.fn_name; 
    END; 
$$ 
LANGUAGE plpgsql; 

PL/pgSQl block layoutExecuting a query with a single-row result

另請注意,您將需要更改SELECT語句 - 您現在編寫的方式,PL/p gSQL編譯器會抱怨它沒有放置結果的位置(你已經請求了兩個值,fn_nam和count(*)+ 1),但是你缺少一個INTO子句。

+0

謝謝korry,我想檢查兩個答案,但user_0先發帖子,再次感謝man。如果我沒有濫用你的支持,我還有另一個關於postgreSQL的問題,我希望你檢查一下。 – Natysiu16