在Oracle中将1传递给游标时指定可变大小

Posted

技术标签:

【中文标题】在Oracle中将1传递给游标时指定可变大小【英文标题】:Specifying variable size when passing one to the cursor in Oracle 【发布时间】:2011-01-28 18:52:35 【问题描述】:

如果我定义的光标接受 2 个这样的参数:

CURSOR cur_det (var1 IN varchar2,var2 IN varchar2)  IS

是否可以指定它们的大小?谢谢

【问题讨论】:

你试过CURSOR cur_det (var1 IN varchar2(10),var2 IN varchar2(72)) IS... 看看会发生什么吗? @Frustrated - 你得到 ORA-06550,PLS-00103,“在期待...时遇到了符号“(”。它不喜欢“(10)”。 @redcayuga:我试图向 OP 建议他们应该自己尝试并报告结果,然后再在这里询问。 @Frustrated:我明白你的意思,这是一个 RTM 问题。 “Try It Yourself So You Don't have to Ask”有首字母缩写词吗? - TIYSYDHTA? 【参考方案1】:

不,您不能指定varchar2(100) 或类似的东西。传递的 varchar 不受约束。

您可以使用 %Type 将参数锚定到数据库列,即my_table.a_column%Type。但我不认为这实际上限制了参数。

【讨论】:

感谢您的确认。经过仔细检查,我的问题在其他地方,但这很有用。谢谢

以上是关于在Oracle中将1传递给游标时指定可变大小的主要内容,如果未能解决你的问题,请参考以下文章

SQL 中将游标循环查询的结果插入到临时表中

Oracle数据库存储过程中输出参数为自定义游标类型时,使用call或者exec调用时,用啥来给游标赋值

PLS-00103 在 Oracle 游标中提供参数时 [重复]

将变量传递给游标

oracle数据库,PLS-S-01705, 如果游标说明中有 UNION 或 ORDER_BY, 则由游标指定的表不可更新

如何将日期值传递给 plsql 中的游标?