PACKAGE BODY exec_any_sql IS PROCEDURE delete_from (schema_in IN VARCHAR2 DEFAULT USER, table_in IN VARCHAR2, where_in IN VARCHAR2 DEFAULT NULL, rowcount_out OUT INTEGER) IS BEGIN EXECUTE IMMEDIATE 'DELETE FROM ' || schema_in || '.' || table_in || ' ' || where_in; rowcount_out := SQL%ROWCOUNT; END; FUNCTION columns_list (columns_in IN DBMS_SQL.varchar2_table) RETURN VARCHAR2 IS l_return VARCHAR2 (32767); BEGIN FOR indx IN 1 .. columns_in.COUNT LOOP l_return := l_return || ',' || columns_in (indx); END LOOP; RETURN LTRIM (l_return, ','); END; FUNCTION values_list (values_in IN DBMS_SQL.varchar2_table) RETURN VARCHAR2 IS l_return VARCHAR2 (32767); BEGIN FOR indx IN 1 .. values_in.COUNT LOOP l_return := l_return || ',''' || values_in (indx) || ''''; END LOOP; RETURN LTRIM (l_return, ','); END; PROCEDURE insert_into (schema_in IN VARCHAR2 DEFAULT USER, table_in IN VARCHAR2, columns_in IN DBMS_SQL.varchar2_table, values_in IN DBMS_SQL.varchar2_table, rowcount_out OUT INTEGER) IS BEGIN EXECUTE IMMEDIATE 'INSERT INTO ' || schema_in || '.' || table_in || ' (' || columns_list (columns_in) || ') VALUES (' || values_list (columns_in) || ')'; rowcount_out := SQL%ROWCOUNT; END; FUNCTION set_pairs (columns_in IN DBMS_SQL.varchar2_table, values_in IN DBMS_SQL.varchar2_table) RETURN VARCHAR2 IS l_return VARCHAR2 (32767); BEGIN FOR indx IN 1 .. columns_in.COUNT LOOP l_return := l_return || columns_in (indx) || ' = ''' || values_in (indx) || ''','; END LOOP; RETURN RTRIM (l_return, ','); END; PROCEDURE update_in (schema_in IN VARCHAR2 DEFAULT USER, table_in IN VARCHAR2, where_in IN VARCHAR2 DEFAULT NULL, columns_in IN DBMS_SQL.varchar2_table, values_in IN DBMS_SQL.varchar2_table, rowcount_out OUT INTEGER) IS BEGIN EXECUTE IMMEDIATE 'UPDATE ' || schema_in || '.' || table_in || ' SET ' || set_pairs (columns_in, values_in) || ' WHERE ' || where_in; rowcount_out := SQL%ROWCOUNT; END; END;
Return to Steven Feuerstein’s “Just Say No, Unless You Can’t” article | ![]() |
DISCLAIMER: We've captured these popular historical magazine articles for your reference. Links etc contained within these article possibly won't work. These articles are provided as-is with no guarantee that the information within them is the best advice for current versions of the Oracle Database.