【问题标题】:How to select multiple IDs into nested table type? [duplicate]如何将多个 ID 选择为嵌套表类型? [复制]
【发布时间】:2017-05-28 16:15:43
【问题描述】:

我制作了游戏数据库,我需要制作类型 ='x' 的 ID 表(向量)。 ID 是数字。

create or replace procedure add_items
is
  TYPE ID_TAB IS TABLE OF NUMBER(20);
  id_eq_weapon ID_TAB;
begin
  select id into id_eq_weapon from EQ where TYPE='weapon'; --ERROR HERE
  for [..]

有人可以帮忙吗?

【问题讨论】:

  • 错误通常带有代码或消息,可以准确解释问题所在。如果你想学习,你应该练习阅读那些。 (它们还使其他人更容易帮助您。)
  • @CraigYoung 错误(16,18):PLS-00642:SQL 语句中不允许本地集合类型。它根本没有帮助..
  • 当然有帮助。请将其添加到问题中。

标签: sql oracle plsql


【解决方案1】:

您正在填充一个集合,但您的代码使用了填充标量变量的语法。试试这个:

select id 
bulk collect into id_eq_weapon 
from EQ where TYPE='weapon'; 

“如何在这个选择之后检查值?dbms_output.put_line(id_eq_weapon);没有显示任何东西”

这是一个集合:您需要使用索引来引用条目,例如

for idx in id_eq_weapon.first().. id_eq_weapon.last()
loop
    dbms_output.put_line(id_eq_weapon(idx));
end loop;  

阅读有关 PL/SQL 集合的 Oracle 文档可能会让您受益。 Find out more.

【讨论】:

  • 谢谢!它有效,但是如何在此选择后检查值? dbms_output.put_line(id_eq_weapon); 没有显示任何内容
  • id_eq_weapon 是一个集合。 dbms_output.put_line 接受一个字符串。您需要一次遍历一个元素,或者使用调试器。
  • 我还没有听说过收集。谢谢。
  • @Xalion 至少,您在选择忽略的错误消息中听说过“集合类型”。因此,如果您对阅读有更好的态度并确保您理解错误信息,您会发现学习起来会容易得多。
猜你喜欢
  • 2022-11-08
  • 2013-01-27
  • 1970-01-01
  • 2019-02-14
  • 2012-08-29
  • 1970-01-01
  • 2018-03-31
  • 1970-01-01
  • 2017-12-19
相关资源
最近更新 更多