Sql “选择”附近的语法错误

Sql “选择”附近的语法错误,sql,procedure,sqlanywhere,Sql,Procedure,Sqlanywhere,第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 I

第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,然后选择它


有人能帮忙吗?我不知道它为什么不起作用。

您需要添加一个分号;在INSERT语句之后,确保它被视为数据库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)
        SELECT 1, nvl(max(DataMigracao),to_date('01012000','DDMMYYYY'))
        From migracao_controlo;   
    END IF 
END
如果第一个参数为null,则nvl返回第二个参数

请参见此处:

我认为您需要围绕其他部分开始和结束。有多个语句。