Numeric or value error host bind array too small

Are you getting an ORA-06502 error message when working with Oracle SQL? Learn how to resolve it and what causes it in this article.

Are you getting an ORA-06502 error message when working with Oracle SQL? Learn how to resolve it and what causes it in this article.

ORA-06502 Cause

The cause of the “ORA-06502 PL/SQL numeric or value error” can be one of many things:

  1. A value is being assigned to a numeric variable, but the value is larger than what the variable can handle.
  2. A non-numeric value is being assigned to a numeric variable.
  3. A value of NULL is being assigned to a variable which has a NOT NULL constraint.

Let’s take a look at the solutions for each of these causes.

The solution for this error will depend on the cause.

Let’s see an example of each of the three causes mentioned above.

Solution 1: Value Larger than Variable (Number Precision Too Large)

In this example, we have some code that is setting a numeric variable to a value which is larger than what can be stored.

Let’s create this procedure which declares and then sets a variable:

CREATE OR REPLACE PROCEDURE TestLargeNumber
AS
  testNumber NUMBER(3);
BEGIN
  testNumber := 4321;
END;

If we compile it, it compiles with no errors.

Procedure TESTLARGENUMBER compiled

Now, let’s run the procedure.

EXEC TestLargeNumber;

We get an error:

Error starting at line : 8 in command -
EXEC TestLargeNumber
Error report -
ORA-06502: PL/SQL: numeric or value error: number precision too large
ORA-06512: at "SYSTEM.TESTLARGENUMBER", line 5
ORA-06512: at line 1
06502. 00000 -  "PL/SQL: numeric or value error%s"
*Cause:    An arithmetic, numeric, string, conversion, or constraint error
           occurred. For example, this error occurs if an attempt is made to
           assign the value NULL to a variable declared NOT NULL, or if an
           attempt is made to assign an integer larger than 99 to a variable
           declared NUMBER(2).
*Action:   Change the data, how it is manipulated, or how it is declared so
           that values do not violate constraints.

The error we’ve gotten is “ORA-06502: PL/SQL: numeric or value error: number precision too large”. It also includes an ORA-06512, but that error just mentions the next line the code is run from, as explained in this article on ORA-06512.

This is because our variable testNumber can only hold 3 digits, because it was declared as a NUMBER(3). But, the value we’re setting it to a few lines later is 4 digit long (4321).

So, the value is too large for the variable.

To resolve it, increase the size of your variable, or manipulate your value to fit the size of the variable (if possible).

In our example , we can change the size of the variable.

CREATE OR REPLACE PROCEDURE TestLargeNumber
AS
  testNumber NUMBER(4);
BEGIN
  testNumber := 4321;
END;
Procedure TESTLARGENUMBER compiled

Now, let’s run the procedure.

EXEC TestLargeNumber;
PL/SQL procedure successfully completed.

The procedure runs successfully. We don’t get any output (because we didn’t code any in), but there are no errors.

Read more on the Oracle data types here.

Solution 2: Non-Numeric Value

Another way to find and resolve this error is by ensuring you’re not setting a numeric variable to a non-numeric value.

For example, take a look at this function.

CREATE OR REPLACE PROCEDURE TestNonNumeric
AS
  testNumber NUMBER(4);
BEGIN
  testNumber := 'Yes';
END;
Procedure TESTNONNUMERIC compiled

The procedure compiles successfully. Now, let’s fun the function.

EXEC TestNonNumeric;
Error starting at line : 8 in command -
EXEC TestNonNumeric
Error report -
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at "SYSTEM.TESTNONNUMERIC", line 5
ORA-06512: at line 1
06502. 00000 -  "PL/SQL: numeric or value error%s"
*Cause:    An arithmetic, numeric, string, conversion, or constraint error
           occurred. For example, this error occurs if an attempt is made to
           assign the value NULL to a variable declared NOT NULL, or if an
           attempt is made to assign an integer larger than 99 to a variable
           declared NUMBER(2).
*Action:   Change the data, how it is manipulated, or how it is declared so
           that values do not violate constraints.

The error we get is “ORA-06502: PL/SQL: numeric or value error: character to number conversion error”.

This happens because our variable testNumber is set to a NUMBER, but a few lines later, we’re setting it to a string value which cannot be converted to a number

To resolve this error:

  1. Ensure the value coming in is a number and not a string.
  2. Convert your string to a number using TO_NUMBER (the conversion might happen implicitly but this may help).
  3. Convert your string to the ASCII code that represents the string using the ASCII function.
  4. Change the data type of your variable (but check that your code is getting the right value first).

The solution you use will depend on your requirements.

Solution 3: NOT NULL Variable

This error can appear if you try to set a NULL value to a NOT NULL variable.

Let’s take a look at this code here:

CREATE OR REPLACE PROCEDURE TestNonNull
AS
  testNumber NUMBER(4) NOT NULL := 10;
  nullValue NUMBER(4) := NULL;
BEGIN
  testNumber := nullValue;
END;

Procedure TESTNONNULL compiled

Now, the reason we’re using a variable to store NULL and not just setting testNumber to NULL is because we get a different error in that case. Besides, it’s probably more likely that your NULL value will come from another system or a database table, rather than a hard-coded NULL value.

Let’s run this function now.

Error starting at line : 9 in command -
EXEC TestNonNull
Error report -
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at "SYSTEM.TESTNONNULL", line 6
ORA-06512: at line 1
06502. 00000 -  "PL/SQL: numeric or value error%s"
*Cause:    An arithmetic, numeric, string, conversion, or constraint error
           occurred. For example, this error occurs if an attempt is made to
           assign the value NULL to a variable declared NOT NULL, or if an
           attempt is made to assign an integer larger than 99 to a variable
           declared NUMBER(2).
*Action:   Change the data, how it is manipulated, or how it is declared so
           that values do not violate constraints.

We get the ORA-06502 error.

This error message doesn’t give us much more information. But, we can look at the code on line 6, as indicated by the message. We can see we have a variable that has a NOT NULL constraint, and the variable is NULL.

To be sure, we can output some text in our demo when it is null.

CREATE OR REPLACE PROCEDURE TestNonNull
AS
  testNumber NUMBER(4) NOT NULL := 10;
  nullValue NUMBER(4) := NULL;
BEGIN
  IF (nullValue IS NULL) THEN
    dbms_output.put_line('Value is null!');
  ELSE
    testNumber := nullValue;
  END IF;
END;

Now let’s call the procedure.

EXEC TestNonNull;
Value is null!

The output shows the text message, indicating the value is null.

ORA-06502 character string buffer too small

This version of the error can occur if you set a character variable to a value larger than what it can hold.

When you declare character variables (CHAR, VARCHAR2, for example), you need to specify the maximum size of the value. If a value is assigned to this variable which is larger than that size, then this error will occur.

For example:

DECLARE
  charValue VARCHAR2(5);
BEGIN
  charValue := 'ABCDEF';
END;

If I compile this code, I get an error:

ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at line 4

This happens because the variable is 5 characters long, and I’m setting it to a value which is 6 characters long.

You could also get this error when using CHAR data types.

DECLARE
  charValue CHAR(5);
BEGIN
  charValue := 'A';
  charValue := charValue || 'B';
END;
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at line 5

This error happens because the CHAR data type uses the maximum number of characters. It has stored the value of A and added 4 space characters, up until its maximum value of 5.

When you try to concatenate a value of B to it, the resulting value is ‘A    B’, which is 6 characters.

To resolve this, use a VARCHAR2 variable instead of a CHAR, and ensure the maximum size is enough for you.

ORA-06502: pl/sql: numeric or value error: null index table key value

Sometimes you might get this error message with the ORA-06502 error:

ORA-06502: pl/sql: numeric or value error: null index table key value

This means that either:

  • Your index variable is not getting initialized, or
  • Your index variable is getting set to NULL somewhere in the code.

Check your code to see that neither of these two situations are happening.

ORA-06502: pl/sql: numeric or value error: bulk bind: truncated bind

You might also get this specific error message:

ORA-06502: pl/sql: numeric or value error: bulk bind: truncated bind

This is caused by an attempt to SELECT, UPDATE, or INSERT data into a table using a PL/SQL type where a column does not have the same scale as the column in the table.

For example, you may have declared a variable in PL/SQL to be VARCHAR2(100), but your table is only a VARCHAR2(50) field. You may get this error then.

You may also get this error because some data types in PL/SQL have different lengths in SQL.

To resolve this, declare your variables as the same type as the SQL table:

type t_yourcol is table of yourtable.yourcol%TYPE;

So, that’s how you resolve the ORA-06502 error.

Lastly, if you enjoy the information and career advice I’ve been providing, sign up to my newsletter below to stay up-to-date on my articles. You’ll also receive a fantastic bonus. Thanks!

I did not see a forum for SQLPLUS, so I hope this is the correct forum to post my question to.

After running the following script (did not put in all columns, because it is too many):

set termout on
set echo off
set feedback off
spool &directory
declare
cursor get_fore
is
select fortype, forarea, forlocal, …, …
from forcast;
begin
    dbms_output.put_line
    ( rpad(‘fortype’, 20 ) ||
      rpad(‘forarea’, 20) ||
      rpad(‘forlocal’ ,20) ||
       …
       …
      rpad…);

      dbms_output.put_line
      ( rpad( ‘-‘, 20, ‘-‘) ||
        rpad(‘  -‘,20,’-‘) ||
        rpad(‘  -‘,20,’-‘)
        …
        …
        rpad…);

    for for_rec in get_fore loop
           dbms_output.put_line
           ( rpad( for_rec.fortype, 20 ) ||
             rpad( for_rec.forarea, 20 ) ||
             rpad( for_rec.forlocal, 20 )
             …
             …
             rpad…);
    end loop;
   end;
  /
spool off
set serveroutput off

I received the following error: ORA-06502: PL/SQL: numeric or value error: host bind array too small.

I understand this happens due to restrictions of 255 characters on DBMS_OUTPUT.PUT_LINE.

So, I changed to

set termout on
set echo off
set feedback off
spool &directory
declare
cursor get_fore
is
select fortype, forarea, forlocal, …, …
from forcast;
var1 varchar2(4000);
var2 varchar2(4000);
begin
    var1 := rpad(‘Forecast Type’, 20 ) ||
      rpad(‘Forecast Area’,20) ||
      rpad(‘Forecast Local’,20)||
       …
       …
      rpad( ‘-‘, 10, ‘-‘) ||
      rpad(‘  -‘,10,’-‘) ||
      rpad(‘  -‘,10,’-‘)
        …
        …
      rpad…);

    str_len := length(var1);
    while loop_cnt < str_len
    loop
        dbms_output.put_line(substr(var1, loop_count +1, 255));
    end loop;

    str_len := 0;
    loop_count := 0;

    for for_rec in get_fore loop
             var2 := rpad( for_rec.fortype, 10 ) ||
             rpad( for_rec.forarea, 10 ) ||
             rpad( for_rec.forlocal, 10 ) ||
             …
             …
             rpad… );
        str_len := length(var1);
        while loop_cnt < str_len
        loop
           dbms_output.put_line(substr(var1, loop_count +1, 255));
        end loop;
    end loop;
   end;
  /
spool off
set serveroutput off

So, the problem is that the formatting is really off.
Before the change the results looked like:

Forecast Type     Forecast Area    Forecast Local  … ….
————————————————————
xxxxxxx           xxxxxxx          xxxxxxxxxx

Now the headings, underscores and data wrap:

Forecast Type     Forecast Area     
               Forecast Local    … ….
————————————————————
xxxxxxx           xxxxxxx          
               xxxxxxxxxx        xxxx xxxx

I am new at formatting using SQLPLUS and if anyone could give me some answers, I would appreciate it.

Thanks.

getjbb

Об этой ошибке: ORA-06502: числовая или значимая ошибка

 FOR this_loop IN (SELECT field_A, field_B FROM TABLE_NAME WHERE num = i_num) LOOP IF this_loop.field_B BETWEEN 1 AND 3 THEN v_A := v_A || ' ' || this_loop.field_A; ELSIF this_loop.field_B BETWEEN 4 AND 8 THEN v_field_A := v_field_A || ' ' || this_loop.field_A; -- Error is at this line ELSIF this_loop.field_B BETWEEN 9 AND 15 THEN v_B := v_B || ' ' || this_loop.field_A; END IF; END LOOP; 

Переменная обозначается как

v_field_A VARCHAR2 (100); 

Что я знаю —

  1. Переменная v_field_A не может содержать значение более 100 символов.
  2. Результат, который я получаю от SELECT Запрос не может содержать более 10 символов.

Мой вопрос — как вообще можно решить эту проблему с пространственным буфером, когда символы находятся в пределах лимита varchar2? Я столкнулся с этой проблемой несколько лет назад, но в прошлый раз причиной был выход select запрос. В нем было более 100 символов, и, следовательно, проблема с размером, но на этот раз не более 10 символов. Я в замешательстве. Любая помощь приветствуется

  • сколько строк у вас в таблице?
  • Есть более миллиона строк, но это происходит только с несколькими строками.
  • Чтобы быть более конкретным, сколько строк извлекает цикл? 10 символов * 11 итераций цикла == вы столкнетесь с ошибкой, так как вы продолжаете конкатенировать значение переменной на каждой итерации
  • почему нельзя увеличить размер v_field_A? это решит проблему
  • @ Сатья Это зависит от обстоятельств. Обычно это не более 3-4 рядов.

Переменная v_field_A не может содержать значение более 100 символов.

Почему нет? Это очень возможно, так как вы сцепление переменная для каждой строки в КУРСОР ДЛЯ ПЕТЛИ.

Например,

SQL> DECLARE 2 v_name VARCHAR2(50); 3 BEGIN 4 FOR i IN 5 (SELECT ename FROM emp 6 ) 7 LOOP 8 v_name := v_name || i.ename; 9 END LOOP; 10 END; 11 / DECLARE * ERROR at line 1: ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512: at line 8 

Использовать DBMS_OUTPUT чтобы увидеть текущий размер переменной и добавляемое новое значение.

Давайте отладим

SQL> DECLARE 2 v_name VARCHAR2(50); 3 BEGIN 4 FOR i IN 5 (SELECT ename FROM emp 6 ) 7 LOOP 8 dbms_output.put_line('Length of new value = '||LENGTH(i.ename)); 9 v_name := v_name || i.ename; 10 dbms_output.put_line('Length of variable = '||LENGTH(v_name)); 11 END LOOP; 12 END; 13 / Length of new value = 5 Length of variable = 5 Length of new value = 5 Length of variable = 10 Length of new value = 4 Length of variable = 14 Length of new value = 5 Length of variable = 19 Length of new value = 6 Length of variable = 25 Length of new value = 5 Length of variable = 30 Length of new value = 5 Length of variable = 35 Length of new value = 5 Length of variable = 40 Length of new value = 4 Length of variable = 44 Length of new value = 6 Length of variable = 50 Length of new value = 5 

ошибка

DECLARE * ERROR at line 1: ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512: at line 9 

Это довольно ясно, мы хотели объединить строку длиной 5 к переменной, объявленной как максимальный размер 50, в настоящее время хранит значение размера 50. следовательно, он выдает ошибку ORA-06502: PL/SQL: numeric or value error: character string buffer too small.

  • Поправьте меня если я ошибаюсь. если переменная может содержать более 50 или 100 символов. Проблема размера не должна существовать вовсе, верно?
  • @PirateX Вы забываете тот факт, что вы объединяете значения в переменную в цикле, поэтому в какой-то момент при итерации по косякам он превышает заявленный размер. Я добавил в свой ответ пример.
  • Хорошо, я думаю, что у меня есть идея. Это конкатенация, которая в какой-то момент превышает предел 100, вызывая ошибку. Правильно ?
  • @PirateX Совершенно верно. Это то, что вы видите в DBMS_OUTPUT в примере, который я вам показал.
  • @PirateX Пожалуйста, отметьте это как ответ, помогло бы и другим! Я вижу, что ни один из ваших вопросов никогда не был отмечен как отвеченный. Это хороший жест, и сообщество предлагает принять ответ, который решит вашу проблему. Удачи!

11 строк * 10 символов> 100 символов => ошибка — вы объединяете много строк по 10 символов вместе в одну из трех переменных. Один из них будет расти каждый раз в цикле.

Что мне не хватает?

Также остерегайтесь символов вместо байтов. В varchar2 каждый CHARACTER, вероятно, займет 2 байта.

Проверьте, сколько раз это условие выполняется и какие значения объединяются. Поскольку это объединяется несколько раз, существует вероятность того, что размер v_field_A превышает 50 символов.

ELSIF this_loop.field_B BETWEEN 4 AND 8 THEN v_field_A := v_field_A || ' ' || this_loop.field_A; 

Чтобы решить эту проблему, вы можете увеличить размер этой переменной. Вы можете объявить varchar размером до 32 767 байт

Вы можете выполнить конкатенацию строк в SQL-запросе:

SELECT field_A, LISTAGG(CASE WHEN field_B BETWEEN 1 AND 3 THEN field_A END, ' ') WITHIN GROUP (ORDER BY field_A) as val1, LISTAGG(CASE WHEN field_B BETWEEN 4 AND 8 THEN field_A END, ' ') WITHIN GROUP (ORDER BY field_A) as val2, LISTAGG(CASE WHEN field_B BETWEEN 9 AND 15 THEN field_A END, ' ') WITHIN GROUP (ORDER BY field_A) as val3 FROM TABLE_NAME WHERE num = i_num; 

Это сделано для упрощения вашего кода. Вы по-прежнему ограничены длиной строки Oracle. Вы можете обойти ограничение Oracle в PL / SQL с помощью CLOB, но в этом нет необходимости, если конечная строка состоит всего из нескольких сотен символов.

  • 2 Даже LISTAGG имеет Ограничение SQL из 4000.

Ответ на ваш вопрос заключается в том, сколько раз цикл выполняется и сколько раз он входит в условие IF.

ПРИМЕР :

Состояние : МЕЖДУ 4 А ТАКЖЕ 8

this_loop.field_A: = ‘тест’;

Количество выполнений цикла = 100

Из-за КОНКАТИНАЦИЯ размер определенно вырастет более чем на 100 символов.

То же самое будет и с другими условиями LOOP.

Решение : Попробуйте использовать CLOB вместо того VARCHAR чтобы устранить эту проблему.

Ошибки Oracle очень наглядны. Если он вызывает ошибку, это в значительной степени объясняет сценарий: P.

Tweet

Share

Link

Plus

Send

Send

Pin

The 18 January quiz tested your knowledge of the contents of strings returned by a call to DBMS_UTILITY.FORMAT_CALL_STACK, which (roughly speaking) answers the question: «How did I get here?» (with a nod to the Talking Heads, one of my all-time favorite bands)

Iudith Mentzel went exploring and came up with some interesting tidbits that I thought I would share.

First, she noted that «this quiz was very similar with the quiz from 21 April 2011. The only difference was that it mentioned a nested block for the procedure that is calling DBMS_UTILITY.FORMAT_CALL_STACK…by the way, in comparison with the previous one that was scored as Advanced, this one was even trickier and scored as Intermediate, which looks not very consistent.»

You are absolutely right, Iudith. That was not very consistent. Among other things, once a reviewer pointed out that the bottom of the stack could under some circumstances not be an anonymous block, I should have changed it to Advanced.

With my spare moments, I am going back to older quizzes and cleaning them up (adding lesson summaries and verification code, for example, since these were not even stored with questions when the PL/SQL Challenge first started). In the process I am finding many quizzes whose levels of difficulty and other information should probably be adjusted. These changes would, however, also affect scoring. So at some point, we will tweak our backend so that «old» scores and ranking data are archived and will not be affected by changes in the questions.

Now on to more substantive thoughts from Iudith on the call stack function (her words in blue):

Checking the quiz scenario, I found some strange issues, here is my test case:

CREATE OR REPLACE PROCEDURE plch_proc1
IS
BEGIN
   BEGIN
       DBMS_OUTPUT.put_line (DBMS_UTILITY.format_call_stack);
   END;   
END;
/

-- Procedure created.

CREATE OR REPLACE PACKAGE plch_pkg1
IS
   PROCEDURE proc2;
END plch_pkg1;
/

-- Package created.

CREATE OR REPLACE PACKAGE BODY plch_pkg1
IS
   PROCEDURE proc2
   IS
   BEGIN
      plch_proc1;
   END;
END plch_pkg1;
/

-- Package body created.

CREATE OR REPLACE PROCEDURE plch_proc3
IS
BEGIN
   plch_pkg1.proc2;
END;
/

-- Procedure created.

-- testing
BEGIN
    plch_proc3;
END;
/

----- PL/SQL Call Stack -----
  object      line  object
  handle    number  name
000007FFD219EC48         5  procedure SCOTT.PLCH_PROC1
000007FFD1FF5810         6  package body SCOTT.PLCH_PKG1
000007FFD1F54060         4  procedure SCOTT.PLCH_PROC3
000007

For some reason, SQL*PLUS client (version 9i) did not display the output correctly; the «anonymous block» is NOT there … though it should be.The above output looks like this after some editing, otherwise the lines were broken in the middle …This was tested with an 11gR1 database (11.1.0.7.0) having UTF8 character set. The same SQL*PLUS client version, on a single-byte character set database was even stranger:

BEGIN
plch_proc3;
END;
/

ERROR:
ORA-06502: PL/SQL: numeric or value error: host bind array too small
ORA-06512: at line 1

Just «to make peace», I decided to put the value into a table and select afterwards to see it, so I rewrote plch_proc1 … and now comes the interesting part:

CREATE TABLE plch_temp ( x VARCHAR2(4000) )
/

-- Table created.

--version 1 - insert the  function result directly into the table:

CREATE OR REPLACE PROCEDURE plch_proc1
IS
BEGIN
BEGIN
   INSERT INTO plch_temp VALUES (DBMS_UTILITY.format_call_stack);
END;   
END;
/

-- Procedure created.

BEGIN
plch_proc3;
END;
/

-- PL/SQL procedure successfully completed.

-- now we have "anonymous block" TWICE  !!!
SQL> SELECT * FROM plch_temp
2  /

----- PL/SQL Call Stack -----
object      line  object
handle    number  name
000007FFD1EE0C38         1  anonymous block
000007FFD219EC48         7  procedure SCOTT.PLCH_PROC1
000007FFD1FF5810         6  package body SCOTT.PLCH_PKG1
000007FFD1F54060         4  procedure SCOTT.PLCH_PROC3
000007FFD1E3EEB8         2  anonymous block

1 row selected.

ROLLBACK;
/

--version 2 - store the function result in a local variable before inserting:

CREATE OR REPLACE PROCEDURE plch_proc1
IS
x   VARCHAR2(4000);
BEGIN
BEGIN
-- DBMS_OUTPUT.put_line (DBMS_UTILITY.format_call_stack);      
-- INSERT INTO plch_temp VALUES (DBMS_UTILITY.format_call_stack);
   x := DBMS_UTILITY.format_call_stack;
   INSERT INTO plch_temp VALUES (x);
END;   
END;
/

-- Procedure created.

BEGIN
plch_proc3;
END;
/

-- PL/SQL procedure successfully completed.

-- now it is finally as expected 
SQL> SELECT * FROM plch_temp
2  /

----- PL/SQL Call Stack -----
object      line  object
handle    number  name
000007FFD219EC48        10  procedure SCOTT.PLCH_PROC1
000007FFD1FF5810         6  package body SCOTT.PLCH_PKG1
000007FFD1F54060         4  procedure SCOTT.PLCH_PROC3
000007FFD1F3F920         2  anonymous block

1 row selected.

Just as a last remark, the command line SQLPLUS.exe of Oracle client version 11g displayed the output almost correctly with the original DBMS_OUTPUT.put_line, that is, «anonymous block» was displayed once, but with the lines still broken in the middle …

But the above tests that insert into a table look however strange …it would be interesting to hear if anybody does have any clue for this behavior .

Looks like calling the function DIRECTLY from a SQL statement does generate an additional «anonymous block» layer in the call stack … which can even become misleading if one seriously considers using this function not just for «PL/SQL fun» …

I know that you are very «fond of» the DBMS_UTILITY.FORMAT_CALL_STACK function, however, I don’t think that using it «as is» is such a «big gift» made to the developers … Maybe only by hiding it into another «text analyzing» package, like the sample one supplied .

Back to Steven….it is unlikely that very many of you are still running an Oracle9i client, so that is probably not much of an issue, though interesting to discover. Also good to know that calling the call stack function from within an SQL statement, inside PL/SQL, introduces another anonymous block to the stack. It makes sense to me that this «internal» anonymous block would disappear in that last example. The function is not being called from within the SQL statement any longer.

Thanks, once again, to Iudith for her fascinating explorations. Any comments from other players?

Cheers, SF

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Number of vehicle models 0 как исправить
  • Number of error information log entries что это
  • Number of device paths has reduced error code 1630
  • Number error oracle
  • Num ошибка при синтаксическом анализе пакета

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии