PL / SQL where子句使用IN()表示数组

时间:2017-02-06 11:51:33

标签: arrays plsql

简单表:

CREATE TABLE Users (
  PersonID int,
  Name varchar(255),
  Salary int
);

我必须编写一个将在过程中使用的游标。 Cursor应该返回Name字段属于数组的记录。

CREATE OR REPLACE TYPE namesArray AS TABLE OF int;
/

CURSOR luckyPeople(names IN namesArray) IS
select PersonID from Users
where Name IN(namesArray); //how this can be solved?

如何在select子句中使用数组?

感谢

2 个答案:

答案 0 :(得分:2)

您的一个问题是您将namesArray类型定义为Int,但您正在查询名称列为varchar。另一个问题是你应该改变你的where子句和游标参数部分。

如果您想查看名称列,请尝试以下代码:

CREATE OR REPLACE TYPE namesArray AS TABLE OF varchar(255);

/

CURSOR luckyPeople(names namesArray) IS
select PersonID from Users
where Name IN(select Name from table(namesArray));

答案 1 :(得分:1)

当然

CREATE OR REPLACE TYPE namesArray AS TABLE OF varchar(255);

CURSOR luckyPeople(names IN namesArray) IS
select PersonID from Users, table(names) tnames
where Name = tnames.column_value;