2017-02-22 91 views
0

「語法錯誤附近‘SELECT’第9行」語法錯誤「SELECT」

ALTER PROCEDURE "DBA"."ultimaDataMigracao"() 
RESULT(ultimaData TIMESTAMP) 
BEGIN 
    IF EXISTS (SELECT * FroM migracao_controlo) THEN 
     SELECT max(DataMigracao) 
     From migracao_controlo; 
    ELSE  
     INSERT INTO migracao_controlo (Id, DataMigracao) VALUES ('1','2000-01-01 00:00:00') 
     SELECT max(DataMigracao) 
     From migracao_controlo; 
    END IF 
END 

我想選擇一個表中最大的時間戳,但它是沒有的,我想插入「 2000-01-01 00:00:00「,然後選擇它。

有人可以幫忙嗎?我不確定它爲什麼不起作用。

+1

我想你需要一個'Begin'和'End'周圍的'Else'部分。有超過1個聲明。 –

回答

0

您希望在INSERT語句後面添加一個分號(;),以確保它被數據庫視爲與SELECT不同的語句。

0

你可以試試這個

ALTER PROCEDURE "DBA"."ultimaDataMigracao"() 
RESULT(ultimaData TIMESTAMP) 
BEGIN 
    IF EXISTS (SELECT * FroM migracao_controlo) THEN 
     SELECT max(DataMigracao) 
     From migracao_controlo; 
    ELSE  
     INSERT INTO migracao_controlo (Id, DataMigracao) 
     SELECT 1, nvl(max(DataMigracao),to_date('01012000','DDMMYYYY')) 
     From migracao_controlo; 
    END IF 
END 

NVL返回第二個參數,如果第一個是空的。

在這裏看到:https://www.w3schools.com/sql/sql_isnull.asp