1

目前,当我在 VoltDB 存储过程参数中传递一个空字符串时,它存储为一个空字符串。当我将空字符串作为参数传递时(就像 Oracle 一样),有什么方法可以存储 NULL?

4

1 回答 1

1

在 VoltDB 中,空字符串与 NULL 不同。Oracle 是我所知道的唯一一个认为这些相同的数据库。如果您希望存储 NULL,您可以简单地将 NULL 传递到 VoltDB 存储过程。

如果您希望将空字符串存储为 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();

    }
}
于 2018-05-16T14:29:09.443 回答