Oracle11g 如何在oracle pl/sql 11g中声明数字数组

Oracle11g 如何在oracle pl/sql 11g中声明数字数组,oracle11g,oracle-sqldeveloper,Oracle11g,Oracle Sqldeveloper,我有一组数字需要在两个查询中使用。这些是11g服务器的相同oracle SQL脚本的一部分: 更新表1设置一些_列=1,其中用户_id位于(1、2、3、4、5、6、7、8、9、10) 更新表2设置一些其他列=17,其中用户id位于(1、2、3、4、5、6、7、8、9、10) 如何将该数字列表分解成一个变量,并在两个update语句中使用它?您可以使用: 声明 类型t_num是数字表; num t_num; 开始 --从查询中填充集合 选择rownum 批量收集到num 通过低于10级的双连接;

我有一组数字需要在两个查询中使用。这些是11g服务器的相同oracle SQL脚本的一部分:

更新表1设置一些_列=1,其中用户_id位于(1、2、3、4、5、6、7、8、9、10)

更新表2设置一些其他列=17,其中用户id位于(1、2、3、4、5、6、7、8、9、10)

如何将该数字列表分解成一个变量,并在两个update语句中使用它?

您可以使用:

声明
类型t_num是数字表;
num t_num;
开始
--从查询中填充集合
选择rownum
批量收集到num
通过低于10级的双连接;
--向集合添加一个值
扩展数;
num(num.last):=345;
--在UPDATE语句中使用(与在INSERT和DELETE中使用相同)
对于所有我在num.first..num.last
更新表1设置一些列=1,其中用户id=num(i);
结束;
declare
  type t_num is table of number;
  num t_num;
begin
  -- fill collection from query
  select rownum 
    bulk collect into num
    from dual connect by level < 10;

  -- add one value to collection 
  num.extend;
  num(num.last) := 345;

  -- using in an UPDATE statement (the same you can use in INSERT and DELETE)
  forall i in num.first..num.last 
    update table1 set some_column = 1 where user_id = num(i);
end;