我已经定义并测试了一个自定义例程,该例程以所需的方式处理数据,但是我也希望能够处理传递到字段中的空值。无论我尝试什么,当将null传递给例程时,都会收到以下错误。
输入数据集'0'的字段'Data'为NULL。记录已删除。
我在例程中有一个陷阱来处理传递给它的NULL,但是我的理解是Datastage不在c型标准中存储NULL。我需要怎么做才能在例程中处理这些空值,以及如何停止数据阶段删除记录?我知道我可以为该字段添加NullToEmpty,但是我们有100个工作和列,因此,我强烈希望将其合并。
例如,这是例程的c ++代码。 trimSpace已定义并且可以正常工作,因此将其省略。
char * BlankToValue(char *InStr, char *RepStr)
{
if ((InStr == NULL) || (InStr[0] == '\0')) // Check for null pointer at first character of input string.
{
return RepStr; // Return replacement string if true. This is to prevent unnecessary processing.
} else
{
trimSpace(InStr); // Call previously established function.
if (InStr[0] == '\0') // Checks first character of cleaned input string for null pointer.
{
return RepStr; // Return replacement string if true.
} else
{
return InStr; // Return new input string if false.
}
}
}
您应该使用IsNull()测试吗?