简单表:
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子句中使用数组?
感谢
答案 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;