在Oracle PL/SQL中,我们可以动态插入大容量数据



我需要通过过程插入大容量数据,但表和列将是动态的。假设一个帐户有一个表,它们有自己配置的列,类似地,可以有1000个这样的帐户,所以会有1000个数字表和它们的列。

我们如何在一个单一的程序中实现这一点?

一个非常原始的例子,只是为了让你有这样的感觉:

CREATE OR REPLACE PROCEDURE yourProcedure (tableName VARCHAR2, 
                             colName1 VARCHAR2, colName2 VARCHAR2, colName3 VARCHAR2) IS
   v_column VARCHAR2(30);
   sql_stmt  VARCHAR2(200);
BEGIN
  sql_stmt := 'SELECT ' || colName1 || ', ' || colName2 || ', ' colName3 || ' FROM ' || tableName 
  EXECUTE IMMEDIATE sql_stmt;
  EXCEPTION
  WHEN NO_DATA_FOUND THEN
    DBMS_OUTPUT.PUT_LINE ('Node Data Found');
END yourProcedure;

如果事先不知道需要选择的列,则可以传递一个列数组,而不是仅传递3列。您还可以将变量绑定到select语句,添加"USING"子句。请参阅文档示例:http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/dynamic.htm#CHDGJEGD