| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.server -> Re: Dynamic PL/SQL. Retrieving Value
In your example, you should not put a bind variable into the string sent to dbms_sql.parse.
The critical section of your code should look more like this:
v_select_string := 'SELECT ' || v_sequence_name || '.NEXTVAL' ||
' FROM DUAL';
DBMS_SQL.PARSE(cur_select,v_select_string, DBMS_SQL.NATIVE);
dbms_sql.define_column(CUR_SELECT, 1, V_SEQUENCEID);
w := DBMS_SQL.EXECUTE(cur_select);
IF (DBMS_SQL.FETCH_ROWS(CUR_SELECT) != 0) THEN
dbms_sql.column_value(cur_select,1,v_sequenceid);
END IoF;
--
Jonathan Lewis
Yet another Oracle-related web site: http://www.jlcomp.demon.co.uk
Keith Jamieson wrote in message <7tsqjq$su3$1_at_ezekiel.eunet.ie>... I have written the following PL/SQL function:
CREATE OR REPLACE
FUNCTION get_sequenceid(p_sequence_name IN VARCHAR2,
p_debug_on IN BOOLEAN := FALSE)
RETURN PLS_INTEGER
IS
v_sequence_name VARCHAR2(30);
v_sequenceid NUMBER;
v_module_name VARCHAR2(30) := 'UNKNOWN';
v_module_type VARCHAR2(12) := 'UNKNOWN';
cur_select PLS_INTEGER := DBMS_SQL.OPEN_CURSOR;
v_select_string VARCHAR2(500);
w PLS_INTEGER;
BEGIN
IF p_debug_on
THEN
DBMS_OUTPUT.ENABLE;
ELSE
DBMS_OUTPUT.DISABLE;
END IF;
v_module_name := 'GET_SEQUENCEID';
v_module_type := 'FUNCTION';
DBMS_OUTPUT.PUT_LINE('IN '|| v_module_type || ' ' || =
v_module_name );
v_sequence_name := p_sequence_name;
v_select_string := 'SELECT ' || v_sequence_name || '.NEXTVAL' =
||
' INTO :v_sequenceid' ||
' FROM DUAL';
DBMS_SQL.PARSE(cur_select,v_select_string, DBMS_SQL.NATIVE);
=
DBMS_SQL.BIND_VARIABLE(cur_select,'v_sequenceid',v_sequence_name);
w := DBMS_SQL.EXECUTE(cur_select);
DBMS_SQL.CLOSE_CURSOR(cur_select);
RETURN v_sequenceid;
EXCEPTION
WHEN OTHERS
THEN
DBMS_SQL.CLOSE_CURSOR(cur_select);
DBMS_OUTPUT.ENABLE;
DBMS_OUTPUT.PUT_LINE('An unknown error occurred. Please =
contact Technical Support');
RETURN NULL;
END;
*
ORA-06550: line 4, column 1:
PL/SQL: Statement ignored
What I am trying to do is to return the sequence id to the calling = program. I am assuming that there is a coding bug. Received on Mon Oct 11 1999 - 10:02:29 CDT
![]() |
![]() |