我正在做与dnoeth关于这个问题的第二条评论非常相似的事情:
Insert Into table Teradata dynamic stored procedure SQL
我需要多次运行它才能循环执行相同的插入语句,但对“?”使用不同的值我不确定该怎么做。
我的版本中的动态值是日期范围。我不能在不进行后台处理的情况下运行大量的插入操作,因此已将数据分为多个部分。
谢谢。
答案 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;