1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| PROCEDURE exec (sql_string IN VARCHAR2, connection_string IN VARCHAR2 DEFAULT NULL, n out number )
is
connection_id EXEC_SQL.ConnType;
cursor_number EXEC_SQL.CursType;
ret PLS_INTEGER;
m number;
begin
iF connection_string IS NULL THEN
connection_id := EXEC_SQL.DEFAULT_CONNECTION;
--message('open3='||connection_string);
ELSE
--message('open1='||connection_string);
connection_id :=EXEC_SQL.OPEN_CONNECTION(connection_string);
--message('open2='||connection_string);
END IF;
cursor_number :=EXEC_SQL.OPEN_CURSOR(connection_id);
EXEC_SQL.PARSE(connection_id, cursor_number, sql_string);
--message('sql='||sql_string);
ret := EXEC_SQL.EXECUTE(connection_id, cursor_number);
EXEC_SQL.CLOSE_CURSOR(connection_id, cursor_number);
EXEC_SQL.CLOSE_CONNECTION(connection_id);
-- commit;
--message('hi');
EXCEPTION WHEN EXEC_SQL.PACKAGE_ERROR THEN
TEXT_IO.PUT_LINE('ERROR (' ||TO_CHAR(EXEC_SQL.LAST_ERROR_CODE(connection_id)) || '): '||EXEC_SQL.LAST_ERROR_MESG(connection_id));
IF EXEC_SQL.IS_CONNECTED(connection_id) THEN
IF EXEC_SQL.IS_OPEN(connection_id,Cursor_number) THEN
EXEC_SQL.CLOSE_CURSOR(connection_id,cursor_number);
END IF;
EXEC_SQL.CLOSE_CONNECTION(connection_id);
END IF;
WHEN OTHERS THEN
DISPLAY_ERROR;
END; |
Partager