The syntax of the non-Oracle system determines how a statement specifies a bind variable. For example, on an Oracle system you define bind variables with a preceding colon. For example:
... UPDATE emp SET sal=sal*1.1 WHERE ename=:ename; ...
In this statement, ename is the bind variable. On non-Oracle systems, you may need to specify bind variables with a question mark. For example:
... UPDATE emp SET sal=sal*1.1 WHERE ename= ?; ...
In the bind variable step, you must positionally associate host program variables (in this case, PL/SQL) with each of these bind variables. For example, to execute the preceding statement, use the following PL/SQL program:
DECLARE
c INTEGER;
nr INTEGER;
BEGIN
c := DBMS_HS_PASSTHROUGH.OPEN_CURSOR@salesdb;
DBMS_HS_PASSTHROUGH.PARSE@salesdb(c,
'UPDATE emp SET SAL=SAL*1.1 WHERE ename=?');
DBMS_HS_PASSTHROUGH.BIND_VARIABLE@salesdb(c,1,'JONES');
nr:=DBMS_HS_PASSTHROUGH.EXECUTE_NON_QUERY@salesdb(c);
DBMS_OUTPUT.PUT_LINE(nr||' rows updated');
DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@salesdb(c);
END;