【发布时间】:2015-07-16 08:52:08
【问题描述】:
我正在寻求有关 teradata 中存储过程的帮助。我想更新整个表,为此我尝试使用 for 循环游标。问题是我的更新是通过将参数传递给 SP 的列名来定义的。
我已经看到可以使用动态 sql 来做到这一点,但我还没有找到有关 for 循环游标和动态 sql 主题的任何信息。 FOR LOOP CURSOR 可以吗? 我尝试只使用动态 sql 进行选择和计算,它工作正常,但问题是从选择上的光标更新表。在这种情况下如何从我的光标更新表格?
我让你展示我的代码。
循环光标:
REPLACE PROCEDURE [database].calDELAI
(
IN dateDebut VARCHAR(30),
IN dateFin VARCHAR(30),
IN delay VARCHAR(30)
)
BEGIN
DECLARE DATE_DEBUT_COLONNE VARCHAR(64);
DECLARE DATE_FIN_COLONNE VARCHAR(64);
SET DATE_DEBUT_COLONNE=dateDebut;
SET DATE_FIN_COLONNE=dateFin;
FOR for_loop_update AS cur_select_set CURSOR FOR
SELECT
TMP.DATE_FIN_COLONNE-TMP.DATE_DEBUT_COLONNE
FROM [database].ORD_T_DETL_ORDR_DELAI AS TMP
/* the select is more complicated but here is the spirit of it.*/
DO
IF (delay='DELAI1') THEN SET DELAI1=NB_JR_OUVRABLE;
END IF;
END FOR ;
END ;
teradata给出的错误是:
SPL1027:E, Missing/Invalid SQL statement'E(3810):Column/Parameter '[database].TMP.DATE_FIN_COLONNE' does not exist.'.
SPL2001:E, Undefined symbol 'DELAI1'.
SPL2001:E, Undefined symbol 'NB_JR_OUVRABLE'.
提前感谢您的回复和帮助。
【问题讨论】:
标签: stored-procedures cursor teradata