Teradata UDF是用C ++编写的

时间:2017-05-12 19:09:01

标签: teradata user-defined-functions table-functions

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

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

  1. 如果我从表中传递2列,怎么知道新临时表中的行数?我如何接受从Teradata查询语句中作为列传递到UDF中的值?
  2. 文档附录中给出的内容,例如阶段检查,如TBL_BUILDTBL_PRE_INIT等,是否必须包含在代码中,用于构建表格和其他用途??

1 个答案:

答案 0 :(得分:0)

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

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

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

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