Параметр Char процедуры PL / SQL - PullRequest
2 голосов
/ 31 марта 2012

Возможно, это очень глупый вопрос, но я попытался найти его и ответить на него, но ничего не нашел.

Я пишу процедуру, которая принимает один параметр типа CHAR. то есть:

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

Это не работает и выдает ошибку в области CHAR (5). Если я не указываю размер для параметра, просто оставьте его как CHAR, он будет работать нормально. Я пробовал включить ключевое слово IN, но это не имеет значения.

Есть ли способ указать размер для параметров в процедурах PL / SQL?

Ответы [ 2 ]

9 голосов
/ 31 марта 2012

Есть ли способ указать размер для параметров в процедурах PL / SQL?

Нет, как указано в руководстве

Цитата из http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/subprograms.htm#sthref1640

Для каждого параметра вы указываете:
- Его имя.
- режим параметров (...)
- Тип данных. Вы указываете только тип, а не ограничения по длине или точности.

(Акцент мой)

0 голосов
/ 01 апреля 2012

Как уже упоминалось 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;
...