В VoltDB, Как сохранить NULL в столбце, когда я передаю пустую строку в качестве параметра? - PullRequest
0 голосов
/ 16 мая 2018

В настоящее время, когда я передаю пустую строку в параметре хранимой процедуры VoltDB, она сохраняется как пустая строка. Есть ли способ сохранить NULL, когда я передаю пустую строку в качестве параметра (как в Oracle)?

1 Ответ

0 голосов
/ 16 мая 2018

В VoltDB пустые строки - это не то же самое, что NULL. Oracle - единственная из известных мне баз данных, которая считает их равными. Вы можете просто передать NULL в хранимую процедуру VoltDB, если хотите сохранить NULL.

Если вы хотите, чтобы пустая строка хранилась как NULL, я думаю, что лучшим способом сделать это было бы условное выражение в некотором коде хранимой процедуры Java. Если ввод "", то хранить ноль. Вот так:

public class Example extends VoltProcedure {

    public final SQLStmt sql = new SQLStmt(
        "INSERT INTO t (col1, col2) VALUES (?,?);");

    public VoltTable[] run(long id, String val) throws VoltAbortException {

        if (val.equals("")) {
            val = null;
        }

        voltQueueSQL( sql, id, val );
        return voltExecuteSQL();

    }
}
...