Teradata动态插入-循环?

时间:2018-10-23 20:02:41

标签: sql teradata

我正在做与dnoeth关于这个问题的第二条评论非常相似的事情:

Insert Into table Teradata dynamic stored procedure SQL

我需要多次运行它才能循环执行相同的插入语句,但对“?”使用不同的值我不确定该怎么做。

我的版本中的动态值是日期范围。我不能在不进行后台处理的情况下运行大量的插入操作,因此已将数据分为多个部分。

谢谢。

1 个答案:

答案 0 :(得分:0)

威廉,

您知道,您需要使用游标来迭代要处理的每个值。

为此,将动态创建的INSERT语句存储到变量中。

最后一步:使用EXECUTE IMMEDIATE命令运行存储在teradata变量中的插入语句

这是您可以参考的工作示例

REPLACE PROCEDURE td_user.sp_dynamic_insert( OUT proc_msg VARCHAR(5000) )
BEGIN

DECLARE lv_insert_txt      VARCHAR(20000);

DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN          
/* Error handling code if required */
END;

L0: 
FOR insert_cursor AS select_list
CURSOR FOR    
    SELECT Col2 
    FROM   test_1

DO  
   SET lv_insert_txt = 'INSERT INTO test_2(Col1,Col2) VALUES('||TRIM(insert_cursor.Col2)||','||TRIM(insert_cursor.Col2)||')';


   EXECUTE IMMEDIATE lv_insert_txt;
END FOR L0;

SET proc_msg = 'Procedure completed successfully';
END;