Teradata UDF';s在C++;

Teradata UDF';s在C++;,teradata,user-defined-functions,table-functions,Teradata,User Defined Functions,Table Functions,我已经阅读了Teradata的官方文档 我计划编写一个表函数(C++中的UDF),它接受2列作为输入,处理输入,并将其转换为std::map或结构数组,然后将其传递给另一个函数,该函数接受输入作为结构数组/std::map。我的问题是: 如果我从一个表中传递两列,如何知道新临时表中的行数?如何接受作为列从Teradata查询语句传递到UDF中的值 文件附录中给出的阶段检查,如TBL_BUILD,TBL_PRE_INIT等,是否必须包含在代码中,用于表格构建和其他目的 不能从表UDF返回任何数据结

我已经阅读了Teradata的官方文档

我计划编写一个表函数(C++中的UDF),它接受2列作为输入,处理输入,并将其转换为
std::map
结构数组
,然后将其传递给另一个函数,该函数接受输入作为
结构数组
/
std::map
。我的问题是:

  • 如果我从一个表中传递两列,如何知道新临时表中的行数?如何接受作为列从Teradata查询语句传递到UDF中的值
  • 文件附录中给出的阶段检查,如
    TBL_BUILD
    TBL_PRE_INIT
    等,是否必须包含在代码中,用于表格构建和其他目的

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

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

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

    如果您想要维护一个复杂的内存结构,您可能需要查看table操作符