【发布时间】:2015-03-27 18:05:48
【问题描述】:
我有这张桌子:
CREATE TABLE TEST
(
DEP_CODIGO_UNIDAD NUMBER(4),
XPTO NUMBER(4)
)
我想在 pl 上做一个函数:
select * from TEST where DEP_CODE in (4102, 3201, 8540,...,2010)
这可以使用 SQL,但作为 PL 函数,我收到 ora-01722 无效数字
我的函数如下所示:
FUNCTION REL_TEST(vCeco IN VARCHAR2,
errorCode OUT NUMBER) RETURN CURSOR IS
OPEN CURSOR (bla bla) ...
for
select * from TEST where DEP_CODE in (vCeco)
有什么想法吗?顺便说一句,我使用的是 Oracle 11g。
【问题讨论】:
-
你不能那样做。见这里 - asktom.oracle.com/pls/apex/…
-
您的
vCeco字符串是如何生成的,从哪里生成的?有一些方法可以将字符串解压成值(不一定很漂亮;this question 目前处于活动状态),但您也可以传递一组数字,这样会更容易。 -
Alex,我尝试在 pl sql 中测试,将普通字符串传递到测试窗口,即 4102、3201、8540。我还尝试添加逗号 '4102'、'3201'、'8540' 但是得到同样的错误。