2017-02-22 86 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