The BIND_VARIABLE procedure associates a value with an IN or IN OUT bind variable in a SQL command.
BIND_VARIABLE
IN
IN OUT
BIND_VARIABLE(<c> NUMBER, <name> VARCHAR2, <value> { BLOB | CLOB | DATE | FLOAT | INTEGER | NUMBER | TIMESTAMP | VARCHAR2 } [, <out_value_size> NUMBER ])
c
Cursor ID of the cursor for the SQL command with bind variables.
name
Name of the bind variable in the SQL command.
value
Value to be assigned.
out_value_size
If name is an IN OUT variable, defines the maximum length of the output value. If not specified, the length of value is assumed.
The following anonymous block uses bind variables to insert a row into the emp table.
emp
DECLARE curid NUMBER; v_sql VARCHAR2(150) := 'INSERT INTO emp VALUES ' || '(:p_empno, :p_ename, :p_job, :p_mgr, ' || ':p_hiredate, :p_sal, :p_comm, :p_deptno)'; v_empno emp.empno%TYPE; v_ename emp.ename%TYPE; v_job emp.job%TYPE; v_mgr emp.mgr%TYPE; v_hiredate emp.hiredate%TYPE; v_sal emp.sal%TYPE; v_comm emp.comm%TYPE; v_deptno emp.deptno%TYPE; v_status INTEGER; BEGIN curid := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(curid,v_sql,DBMS_SQL.native); v_empno := 9001; v_ename := 'JONES'; v_job := 'SALESMAN'; v_mgr := 7369; v_hiredate := TO_DATE('13-DEC-07','DD-MON-YY'); v_sal := 8500.00; v_comm := 1500.00; v_deptno := 40; DBMS_SQL.BIND_VARIABLE(curid,':p_empno',v_empno); DBMS_SQL.BIND_VARIABLE(curid,':p_ename',v_ename); DBMS_SQL.BIND_VARIABLE(curid,':p_job',v_job); DBMS_SQL.BIND_VARIABLE(curid,':p_mgr',v_mgr); DBMS_SQL.BIND_VARIABLE(curid,':p_hiredate',v_hiredate); DBMS_SQL.BIND_VARIABLE(curid,':p_sal',v_sal); DBMS_SQL.BIND_VARIABLE(curid,':p_comm',v_comm); DBMS_SQL.BIND_VARIABLE(curid,':p_deptno',v_deptno); v_status := DBMS_SQL.EXECUTE(curid); DBMS_OUTPUT.PUT_LINE('Number of rows processed: ' || v_status); DBMS_SQL.CLOSE_CURSOR(curid); END; Number of rows processed: 1
DBMS_SQL
BIND_VARIABLE_CHAR