Читать текст с объявлением или вызовом такой процедуры весьма нудное занятие, про дебаг и говорить не стоит.
В руководстве слушателя "Oracle Database 10g: Основы PL/SQL" том 1, [9-5] в разделе про синтаксис процедуры написано слудующее:
аргумент - Имя, даваемое параметру процедуры. С каждым аргументом связан
тип_параметра (mode) и тип данных. Допускается любое
количество аргументов, разделенных запятыми.
На самом деле это не так!
Проверка
Выполняем следующий скрипт:
set termout off
store set sqlplus.cfg replace
set pagesize 0
set linesize 10000
set tab off
set trimspool on
set echo off
set verify off
set feedback off
set timing off
set recsep off
spool p_test.sql
SELECT 'create or replace procedure p (' FROM DUAL
/
WITH a AS ( SELECT LEVEL b
FROM DUAL
CONNECT BY LEVEL <= 8191)
SELECT ' p' || b || ' in number,'
FROM a
/
SELECT ' p in number'
|| CHR (10)
|| ' ) as'
|| CHR (10)
|| 'begin'
|| CHR (10)
|| ' null;'
|| CHR (10)
|| 'end;'
|| CHR (10)
|| '/'
FROM DUAL
/
spool off
@sqlplus.cfg
set termout on
@p_test.sql
* This source code was highlighted with Source Code Highlighter.
результат:
D:\sqlplus srv@vm @test.sql
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Oct 30 17:48:33 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Warning: Procedure created with compilation errors.
SQL> show errors;
Errors for PROCEDURE P:
LINE/COL ERROR
-------- -----------------------------------------------------------------
1/0 PLS-00123: program too large (Diana nodes)
SQL>
А вот создать процедуру с 8187 аргуметами вполне возможно.
Если все таки нужно передать много параметров в процедуру или функцию лучше воспользоваться советом Томаса Кайта.
Ссылки:
1. How many parameters can a stored procedure have?
2. PL/SQL User's Guide and Reference Release 2 (9.2) - PL/SQL Program Limits
3. Oracle® Database PL/SQL User's Guide and Reference 10g Release 2 (10.2) - C PL/SQL Program
Limits
4. Writing a function which accepts unlimited parameters
Комментариев нет:
Отправить комментарий