0

我已经浏览了Teradata的官方文档。

我打算编写一个表函数(C++ 中的 UDF),它接受 2 列作为输入,处理输入并将其转换为std::map< string,string >orarray of structs并将其传递给其他接受输入为array of structs/的函数std::map< string,string >。我的问题是:

  1. 如果我从表中传递 2 列,如何知道新临时表中的行数?如何接受从 Teradata 查询语句作为列传递到 UDF 中的值?
  2. 文档附录中给出的诸如相位检查之类的东西是否TBL_BUILD必须TBL_PRE_INIT包含在代码中,以用于构建表格和其他目的?
4

1 回答 1

0

您不能从表 UDF 返回任何数据结构。对于每一行,您都有值堆栈条目来放置返回列的值。并且每个值都必须是 Teradata 可识别的数据类型。

此外,您需要小心使用 STL 库。事实上,避免处理内存分配/释放,而是使用堆栈。这是因为如果您有任何内存泄漏或内存碎片,那么您将不得不不时重新启动您的服务器,这对生产系统不利。

由于每个行和每个阶段都会调用表 UDF,因此保存数据的唯一方法是通过上下文。您也不希望花太多时间处理每一行,因为这将是一个主要的性能问题。

如果您打算维护复杂的内存结构,您可能需要查看表运算符。

于 2017-05-14T18:10:54.253 回答