管理以找到一个更好的解决方案,而无需拖网搜索。我想我会在这里为可能遇到类似问题的人发布解决方案。
对存储过程的要求是一次一行地遍历一个大表,将行中每列的内容连接成一个字符串并将其分配给一个变量。每N行此变量的值将写入一个单独的表。以前我一直使用游标来做这个,但我们团队的开发人员发现使用WITH子句的速度要快得多。
INSERT INTO <MY_SCHEMA>.<MY_TABLE_THAT_WILL_CONTAIN_THE_CONCATENATED_VALUES_OF_EVERY_N_ROWS> WITH CONCATENATE_ROWS AS ( SELECT RANK() OVER (ORDER BY <PRIMARY_KEY_COLUMN>) AS ROWID, <PRIMARY_KEY_COLUMN>, <COLUMN_1> || '' || <COLUMN_2> || '' || ... <COLUMN_N> AS ROW_DETAIL FROM <MY_TABLE_THAT_I_AM_QUERYING> ORDER BY <PRIMARY_KEY_COLUMN> ), GROUPED_ROWS AS ( SELECT (((CONCATENATE_ROWS.ROWID-1)/ <number of rows I want to concatenate, e.g.: 10>)+1) AS GROUPID, CAST(LIST(CONCATENATE_ROWS.ROW_DETAIL, '' ORDER BY <PRIMARY_KEY_COLUMN>) AS VARCHAR(4000)) AS CONCAT_DETAILS FROM CONCATENATE_ROWS GROUP BY (((CONCAT_ORDERS.ROWID-1)/ <number of rows I want to concatenate, e.g.: 10>)+1) ) SELECT <Whatever columns I want to insert into <MY_TABLE_THAT_WILL_CONTAIN_THE_CONCATENATED_VALUES_OF_EVERY_N_ROWS>> FROM GROUPED_ROWS;