Я получаю эту ошибку # 1064 - при импорте [dубликатов]

«Синтаксическая ошибка рядом с« SELECT »в строке 9»

 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 ", а затем выберите его.

Кто-нибудь может помочь? Я не уверен, почему он не работает.

0
задан 22 February 2017 в 19:42

2 ответа

вы можете попробовать это

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 вернуть второй параметр, если первый имеет значение null.

см. здесь: https://www.w3schools.com/sql/ sql_isnull.asp

0
ответ дан 15 August 2018 в 16:55

Вы хотите добавить точку с запятой (;) после оператора INSERT, чтобы убедиться, что она рассматривается как отдельный оператор из SELECT в базе данных.

1
ответ дан 15 August 2018 в 16:55

Другие вопросы по тегам:

Похожие вопросы: