Hello,

I have a 9i release 2 database and the following procedure :

CREATE OR REPLACE PROCEDURE exec(STRING IN varchar2) AS
cursor_name INTEGER;
ret INTEGER;
v_value number;
BEGIN
cursor_name := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(cursor_name, string, DBMS_SQL.native);
dbms_sql.define_column(cursor_name,1,v_value);
ret := DBMS_SQL.EXECUTE(cursor_name);

if dbms_sql.fetch_rows(cursor_name)=0 then
dbms_output.put_line('Selects nothing!');
else
dbms_sql.column_value(cursor_name,1,v_value);
dbms_output.put_line('Value '||v_value);
end if;

dbms_sql.close_cursor(cursor_name);
END;
/

I execute the following statements :

--0
set serveroutput on
--1
alter session set NLS_NUMERIC_CHARACTERS =',.';
--2
DECLARE
STRING VARCHAR2(200);
BEGIN
STRING := 'select to_number(' || '12,3' ||') from dual';
EXEC ( STRING );
end;
/

Should it work or not ? NLS_NUMERIC_CHARACTERS setting is effective in DBMS_SQL.PARSE ?

Thank you,
Florin