Я не знаю JBoss Fuse , но - что касается Oracle - вы бы использовали динамический SQL для этой цели.
Вот пример, основанный на схеме Скотта - я вставляю строку в таблицу EMP, в ее столбцы EMPNO и ENAME (которые являются обязательными).3-й и 4-й параметры моей процедуры:
- имя пользовательского столбца
- пользовательское значение для этого столбца
Это таблица EMP:
SQL> desc emp
Name Null? Type
----------------------------------------- -------- ----------------------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
Процедура:
- PAR_EMPNO и PAR_ENAME - обязательные значения столбцов
- PAR_COL1 - имя пользовательского столбца
- PAR_VAL1 - значение пользовательского столбца
- Переменная L_STR содержит инструкцию SQL
- EXECUTE IMMEDIATE run динамический SQL с использованием переданных вами параметров:
.
SQL> CREATE OR REPLACE PROCEDURE p_userins (par_empno IN NUMBER,
2 par_ename IN VARCHAR2,
3 par_col1 IN VARCHAR2,
4 par_val1 IN VARCHAR2)
5 IS
6 l_str VARCHAR2 (500);
7 BEGIN
8 l_str :=
9 'insert into emp (empno, ename, '
10 || par_col1
11 || ') values (:a, :b, :c)';
12
13 EXECUTE IMMEDIATE l_str USING par_empno, par_ename, par_val1;
14 END;
15 /
Procedure created.
Тестирование:
SQL> EXEC p_userins(1, 'LF', 'deptno', 20);
PL/SQL procedure successfully completed.
SQL> SELECT empno, ename, job, sal, deptno FROM emp WHERE empno = 1;
EMPNO ENAME JOB SAL DEPTNO
---------- ---------- --------- ---------- ----------
1 LF 20
SQL>
Кажется, все в порядке.
Теперь, как вы будете его использовать? JBoss Fuse, не знаю - если вы можете вызвать хранимую процедуру, хорошо - выше приведен код, который вы можете настроить.