Как объявить переменные в хранимой процедуре voltDB

Как объявить переменную в хранимой процедуре. Я попытался использовать следующий код, как в MS Sql Server.

СОЗДАТЬ ПРОЦЕДУРУ TN AS BEGIN DECLARE kkk INTEGER; НАБОР ККК=5; ЕСЛИ(ккк‹10) SELECT * FROM XXXX; ELSE SELECT * FROM XXXX WHERE YYYY = 'Французский'; КОНЕЦ;

Но я получаю сообщение об ошибке "DDL и DML не могут применяться вместе"


person Cenoy    schedule 19.06.2018    source источник


Ответы (1)


Переменные могут быть объявлены только в хранимых процедурах Java. В VoltDB все сложные хранимые процедуры, подобные показанной здесь, должны выполняться на Java.

Пример того, что вы хотите, может быть примерно таким:

public class TN extends VoltProcedure {

    int kkk = 5;

    public final SQLStmt sql1 = new SQLStmt(
        "SELECT * FROM XXXX;");

    public final SQLStmt sql2 = new SQLStmt(
        "SELECT * FROM XXXX WHERE YYYY ='French';");

    public VoltTable[] run(int kkk) throws VoltAbortException {

        if (kkk < 10) {

        voltQueueSQL( sql1 );
        return voltExecuteSQL();

        } else {

        voltQueueSQL( sql2 );
        return voltExecuteSQL();

        }

    }
}

Дополнительную информацию см. в части документации «Хранимые процедуры»: https://docs.voltdb.com/tutorial/Part5.php

Полное раскрытие: я работаю в VoltDB.

person Andrew    schedule 19.06.2018
comment
Спасибо, Эндрю. Есть ли способ написать приведенный выше код на С#? Я не знаком с Java. - person Cenoy; 20.06.2018
comment
VoltDB поддерживает только сложные хранимые процедуры, написанные на Java. Я рекомендую прочитать документы, на которые я ссылался выше, начиная с раздела «Написание более мощных хранимых процедур». Он точно описывает, как это сделать в Java. - person Andrew; 20.06.2018