Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle向临时表插入大量数据_Sql_Database_Plsql_Oracle10g - Fatal编程技术网

Sql Oracle向临时表插入大量数据

Sql Oracle向临时表插入大量数据,sql,database,plsql,oracle10g,Sql,Database,Plsql,Oracle10g,我需要在临时表中插入12000个字符串,每个字符串6个字符。目前,我使用的是文章中的SELECT代码,其中代码='111111'或代码='22222'。。。具有400000个字符并需要20秒执行的命令。我想知道如何加快这个过程 我不需要对我的代码进行任何验证。它们需要作为查询的一部分或作为命令参数从应用程序传输到数据库 type t_varchar_tab is table of varchar2(10) index by pls_integer; procedure insert_table(

我需要在临时表中插入12000个字符串,每个字符串6个字符。目前,我使用的是文章中的SELECT代码,其中代码='111111'或代码='22222'。。。具有400000个字符并需要20秒执行的命令。我想知道如何加快这个过程

我不需要对我的代码进行任何验证。它们需要作为查询的一部分或作为命令参数从应用程序传输到数据库

type t_varchar_tab is table of varchar2(10) index by pls_integer;
procedure insert_table(i_id_tab in t_varchar_tab);
我真的不需要从文章中选择代码,但oracle不支持INSERT INTO中的多条记录。。。值…

通常比满足条件后立即停止计算快。参见前面的问题

因此:

要允许非常大的列表,元组:

Select code
from Articles
where ('1', Code) in (('1','111111'),
                      ('1','222222')...)
IN通常比满足条件后立即停止计算的速度快。参见前面的问题

因此:

要允许非常大的列表,元组:

Select code
from Articles
where ('1', Code) in (('1','111111'),
                      ('1','222222')...)

正如@AlexPoole指出的,最好使用表值参数

type t_varchar_tab is table of varchar2(10) index by pls_integer;
procedure insert_table(i_id_tab in t_varchar_tab);
正文:

C:


谢谢亚历克斯

正如@AlexPoole指出的,最好使用表值参数

type t_varchar_tab is table of varchar2(10) index by pls_integer;
procedure insert_table(i_id_tab in t_varchar_tab);
正文:

C:


谢谢亚历克斯

您在查询111111等中使用的代码列表来自哪里?另一个表,一个文件,用户输入,…?很好的一点,添加到问题。我认为命令参数是一种合理的方式。它们在应用程序中是如何保存的,您使用的是什么语言/连接类型?您可以传递一个值数组,并将其作为一个集合处理。有一个存储过程可以从Sometable中选择代码。我的应用程序获取所有这些代码并尝试将它们传递到oracle临时表。在后端,我将C与devart MySql驱动程序一起使用,但将Oracle类型创建为字符串而不是数字。然后,您不必根据有多少个值来构造语句,只需传递一个数组绑定变量。您在查询111111等中使用的代码列表来自哪里?另一个表,一个文件,用户输入,…?很好的一点,添加到问题。我认为命令参数是一种合理的方式。它们在应用程序中是如何保存的,您使用的是什么语言/连接类型?您可以传递一个值数组,并将其作为一个集合处理。有一个存储过程可以从Sometable中选择代码。我的应用程序获取所有这些代码并尝试将它们传递到oracle临时表。在后端,我将C与devart MySql驱动程序一起使用,但将Oracle类型创建为字符串而不是数字。然后不必根据有多少个值来构造语句,只需传递一个数组绑定变量。它必须有多个IN子句ORd在一起,当然,如果有12000个值要查找,它必须有多个IN子句ORd在一起,当然,如果有12000个值要查找,