
Permitir o acesso a uma base de dados ORACLE.
$ORACLE
Para que um programa OPUS acesse uma base ORACLE, podendo acessar uma base OpenBASE concomitantemente.
Este comando instrui ao compilador que gere um fonte para o pré-compilador C do ORACLE, o ProC, com extensão ".pc" ao invés de um fonte C com extensão ".c". O fluxo de compilação invoca o compilador ProC.
Os comandos de acesso a Bancos de Dados OpenBASE continuam ativos e a base ORACLE é acessada através do comando com sintaxe SQL do ProC.
Opções para o pré-compilador ProC podem ser passadas pela opção $PCC_OPTIONS.
O exemplo a seguir mostra um programa com é esta característica:
* Teste Opus acessando base de dados ORACLE
* Sample Program: Uso concomitante do ORACLE com OpenBASE.
$ORACLE, savec
$pcc_options = "include=/usr/ORACLE/c/lib errors=yes host=c ireclen=132"
prog
database TORACLE 1 a 2
use emp
EXEC SQL INCLUDE sqlca;
empno, mgr, sal, comm, deptno = 0
hiredate, ename, job = space(10)
usernome = "SCOTT"
password = "TIGER"
EXEC SQL WHENEVER SQLERROR GOTO
sqlerror;
EXEC SQL CONNECT :usernome IDENTIFIED
BY : password;
0,0 say "Conectado ORACLE ao usuario: "+usernome
EXEC SQL DECLARE salespeople CURSOR FOR
SELECT EMPNO, ENAME, JOB, MGR,
HIREDATE, SAL, COMM, DEPTNO
FROM EMP;
EXEC SQL OPEN salespeople;
EXEC SQL WHENEVER NOT FOUND GOTO end_of_fetch;
?
nlin = 0
do while .t.
EXEC SQL FETCH salespeople INTO :empno, :ename, :job, :mgr, :hiredate, :sal, :comm, :deptno;
incr nlin
replace empno, ename, job, mgr, hiredate, sal,
comm, deptno
insert
enddo
LABEL SQL end_of_fetch
EXEC SQL CLOSE salespeople;
? "Transferidas ", nlin, " linha", iif(nlin = 1, ".", "s.")
EXEC SQL COMMIT WORK RELEASE;
?
? "Tenha um ", "BOM DIA" bold
quit (0)
LABEL SQL sqlerror
clear
? get_string (sqlca.sqlerrm.sqlerrmc,
get_short(sqlca.sqlerrm.sqlerrml))
EXEC SQL WHENEVER SQLERROR
CONTINUE;
EXEC SQL ROLLBACK WORK RELEASE;
quit (1)
