【问题标题】:PL/SQL Procedure Char ParameterPL/SQL 过程字符参数
【发布时间】:2012-04-15 00:02:33
【问题描述】:

这很可能是一个非常愚蠢的问题,但我已经尝试搜索和回答,结果是空的。

我正在编写一个采用 CHAR 类型的单个参数的过程。即:

  CREATE PROCEDURE Proc1 (Param1 CHAR(5))
  AS
  BEGIN
    ...
  END;

这不起作用并在 CHAR(5) 区域周围引发错误。如果我没有为参数指定大小,那么只需将其保留为 CHAR 即可。我试过包含关键字 IN 但这没有什么区别。

在 PL/SQL 过程中是否可以指定参数的大小?

【问题讨论】:

  • 顺便说一句,一般建议不要使用char。标准字符串类型是varchar2,或clob 用于大值。

标签: sql stored-procedures plsql oracle10g procedure


【解决方案1】:

正如前面提到的a_horse_with_no_name,你不应该在过程定义中指定参数长度。 但是,如果你想控制可变长度,你可以试试这个方法:


procedure A(var CHAR) is
 MAX_CHAR number := 10; -- for an instance
begin
 if length(var) > MAX_CHAR then
   -- here you can throw an exception
 end if;

 ...

end A;

【讨论】:

    【解决方案2】:

    在 PL/SQL 过程中是否可以指定参数的大小?

    不,如手册中所述

    引用http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/subprograms.htm#sthref1640

    对于每个参数,您指定:
    - 它的名字。
    - 它的参数模式(...)
    - 它的数据类型。 您只指定类型,而不是任何长度或精度约束

    (强调我的)

    【讨论】:

    • 谢谢。我看过这个页面,但一定跳过了。感谢您解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 2014-05-13
    相关资源
    最近更新 更多