Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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中的循环和数组_Sql_Oracle - Fatal编程技术网

SQL中的循环和数组

SQL中的循环和数组,sql,oracle,Sql,Oracle,我有一个名为SOURCE_TAG的表,我想在其中插入一个数据,其中所有insert语句只在其中一列中不同。该列是名为SOURCE_LU的表中的主键id。然而,为了获得列的id,我还应该做一些工作 下面的列表包含一列stringKeys的列表,该列位于SOURCE_LU中 因此,首先,我应该做一些类似于以下Oracle SQL中的伪代码的工作 stringKeys= {"foo","bar","foobar","barfoo",...,"etc"} for(each s in StringKeys

我有一个名为SOURCE_TAG的表,我想在其中插入一个数据,其中所有insert语句只在其中一列中不同。该列是名为SOURCE_LU的表中的主键id。然而,为了获得列的id,我还应该做一些工作

下面的列表包含一列stringKeys的列表,该列位于SOURCE_LU中 因此,首先,我应该做一些类似于以下Oracle SQL中的伪代码的工作

stringKeys= {"foo","bar","foobar","barfoo",...,"etc"}
for(each s in StringKeys) {

SELECT SOURCE_LU where stringKeys=s and Store the id in a list (lets say idList)

}
获取id列表后,将每个id插入到SOURCE_标记中,并为每行插入其他类似数据

for (each id in listId ){
  INSERT INTO SOURCE_TAG values (x,y,id)

}

对不起,我是一个不懂SQL的java人。那么,在Oracle SQL中应该如何使用数组和循环呢?解决方案越简单越好。谢谢。

SQL本身没有循环,但Oracle有一种称为PL/SQL的过程语言,您可以使用它。它有循环、条件、变量和其他您可能会用到的东西

但是,我认为您试图实现的目标可以在常规SQL中完成。请注意,我已经多年没有使用Oracle安装了,现在也没有访问权限,但在PostgreSQL中,您可以执行以下操作:

INSERT INTO SOURCE_TAG
(YEAR_ID,SOURCE_TAG_LU_ID,PRIORITY_ORDER,STATUS_EN,SOURCE_LU_ID)
select 4 as year_id, 2 as source_tag, 1000 as priority_order, 'ACTIVE' as status_en, id
from source_lu
where stringkeys in ('foo', 'bar', ...)
group by year_id, source_tag, priority_order, status_en, id;

最后一行中的“按id分组”可能已经足够了。

我没有创建表的权限。我已将答案更改为“不需要”。正如我所说,我现在没有访问Oracle安装的权限。如果你告诉我x和y来自哪里,它们是常数、计算的还是基于其他数据的?我可以给你一个更完整的例子,你可以很容易地测试。谢谢。我正在试这个。同时,你可以给出完整的答案。我会让你知道它是否有效。以下是我正在尝试做的事情,插入到源标记年份ID、源标记LU ID、优先级顺序、状态、源标记ID值4、2、1000、‘活动’,ID。。。。。我需要使用另一个select语句来代替id,该语句将根据字符串键返回id列表。我现在正试着这么做。你们怎么填写身份证?是否用select语句替换id?我不明白。