'SELECT'附近的语法错误

时间:2017-02-22 15:42:55

标签: 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 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”,然后选择它。

有人可以帮忙吗?我不确定它为什么不起作用。

2 个答案:

答案 0 :(得分:1)

您希望在;语句后添加分号(INSERT),以确保它被数据库视为SELECT的单独语句。

答案 1 :(得分: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

如果第一个参数为null,则返回第二个参数。

见这里:https://www.w3schools.com/sql/sql_isnull.asp