具有从 R 脚本调用的动态参数的 Teradata 存储过程

Teradata stored procedure with dynamic parameters called from R script

我需要从 Teradata 中提取一些数据以在 R 中处理。我有大约 84 个 Dep/sec 键,其中大多数具有不同的时间跨度,所以我的想法是在 Teradata 中创建一个存储过程,它将接受 Dep、Sec 和 Dates 作为参数。然后我可以循环遍历 R 中的列表,每次调用 SP 来创建我的数据集。

我为测试这个想法而创建的 SP 非常简单,但我无法让它工作。

CREATE PROCEDURE procTest4 (IntN integer)
BEGIN
CALL DBC.SysExecSQL('SELECT top' || IntN || '*
from TableName');
END;

Teradata 确实创建了 SP,但我不知道如何执行它并将参数传递给它。当我尝试时: 调用 procText4(10) 我收到以下错误:

5568: SQL 语句在存储过程中不受支持。

对我来说,唯一的其他选择是在 R 中创建 SQL 字符串,然后从那里创建 运行 它,但是 SQL 的多次传递会创建易变表和RODBC 包似乎不喜欢它们,而且这是一种非常混乱的方式。

非常感谢任何帮助。

使用动态 SQL 从存储过程返回结果集的语法有点复杂:

CREATE PROCEDURE procTest4 (IntN INTEGER)
DYNAMIC RESULT SETS 1
BEGIN
   DECLARE SqlStr VARCHAR(1000);
   DECLARE rslt CURSOR WITH RETURN ONLY FOR stmt;
   SET SQLStr = 'SELECT top ' || IntN || ' * from TableName';
   PREPARE stmt FROM SqlStr;
   OPEN rslt;
END;

但是你应该仔细检查你是否可以重写那些循环...