|
要做一个Solaris
下的C程序,要求访问Oracle
数据库。试着写了个Sample。
这个Sample均是Select语句,
第一个是查询单条
记录,单个
字段;
第二个是查询单条
记录,多个
字段,不同数据类型;
第三个是查询多条
记录,多个
字段,不同数据类型;
参考: Oracle
9i Database List of Books
http://download.oracle
.com/docs/cd/B10501_01/nav/docindex.htm
-> << Proc*C/C++ Precompiler Programmer's Guide >>
嵌入式SQL(E-SQL)简介3
http://bbs.chinaunix.net/thread-164775-1-1.html
环境
Solaris
10 (SunOS JAL001 5.10 Generic_141445-09 i86pc i386 i86pc)
SunStudio12u1-SunOS-x86-tar-ML.tar.bz2 Oracle
11g
basic-11.2.0.1.0-solaris
-x86.zip (Oracle
11g 32bit 客户端类库,解压至 ${ORACLE
_HOME}/
lib32
下,并 ln -s libclntsh.so.11.1 libclntsh.so)
环境变量
/etc/profile
export PS1=
"\u@\h \W\$ "
export JAVA_HOME=
/
export/
home/
data/
jdk1.
6.
0_21
export SUNSTUDIO_HOME=
/
export/
home/
data/
sunstudio12.
1
export TMP=
/
tmp
export TMPDIR=
$
TMP
export ORACLE
_BASE=
/
export/
home/
oracle
/
oracle
11g
export ORACLE
_HOME=
$
{
ORACLE
_BASE}
/
db_1
export ORACLE
_SID=
JAL
export CPATH=
$
{
ORACLE
_HOME}
/
precomp/
public
export LD_LIBRARY_PATH=
$
{
ORACLE
_HOME}
/
lib32
:
/
lib/
32:
/
usr/
lib:
$
{
ORACLE
_HOME}
/
odg/
lib
export SHLIB_PATH=
$
{
LD_LIBRARY_PATH}
export PATH=
$
{
JAVA_HOME}
/
bin:
$
{
SUNSTUDIO_HOME}
/
bin:
$
{
ORACLE
_HOME}
/
bin:
/
usr/
ucb:
/
usr/
local
/
bin:
/
usr/
openwin/
bin:
/
usr/
ccs/
bin:
/
usr/
sfw/
bin:
/
usr/
X11/
bin:
$
{
PATH}
export DISPLAY=
172.
16.
200.
11:
0.
0
xhost 172.
16.
200.
11
|
输出结果
proc.out.txt
ps:这个是NetBeans整个的Make和运行的记录,全部给出是为了方便以后查找各种命令及参数。
/
export
/
home
/
zhangll
/
NetBeansProjects
/
CDS
-
JAL で
"/export/home/data/sunstudio12.1/bin/dmake -f Makefile CONF=Debug"
を実行中
dmake
:
并列モードをデフォルトとして使用します。
.
dmakerc ファイルの设定については、dmake
(
1
)
のマニュアルページを参照してください。
gmake
-
C
./
sample
.
build
-
pre
gmake
[
1
]:
Entering directory `
/
export
/
home
/
zhangll
/
NetBeansProjects
/
CDS
-
JAL
/
sample
'
#proc INCLUDE=./inc LTYPE=NONE HEADER=hdr INAME=inc/jal_types.h
proc INCLUDE=./inc LTYPE=NONE CHAR_MAP=STRING INAME=src/DBSelect1.sc
Pro*C/C++: Release 11.2.0.1.0 - Production on Wed Jul 14 17:06:09 2010
Copyright (c) 1982, 2009, Oracle
and/or its affiliates. All rights reserved.
System default option values taken from: /export/home/oracle
/oracle
11g/db_1/precomp/admin/pcscfg.cfg
proc INCLUDE=./inc LTYPE=NONE CHAR_MAP=STRING INAME=src/DBSelect2.sc
Pro*C/C++: Release 11.2.0.1.0 - Production on Wed Jul 14 17:06:09 2010
Copyright (c) 1982, 2009, Oracle
and/or its affiliates. All rights reserved.
System default option values taken from: /export/home/oracle
/oracle
11g/db_1/precomp/admin/pcscfg.cfg
proc INCLUDE=./inc LTYPE=NONE CHAR_MAP=STRING INAME=src/DBSelect3.sc
Pro*C/C++: Release 11.2.0.1.0 - Production on Wed Jul 14 17:06:09 2010
Copyright (c) 1982, 2009, Oracle
and/or its affiliates. All rights reserved.
System default option values taken from: /export/home/oracle
/oracle
11g/db_1/precomp/admin/pcscfg.cfg
gmake[1]: Leaving directory `/export/home/zhangll/NetBeansProjects/CDS-JAL/sample'
JAL001
-->
1 个のジョブ
JAL001
-->
2 个のジョブ
gmake
-
f nbproject
/
Makefile
-
Debug
.
mk SUBPROJECTS
=
.
build
-
conf
gmake
[
1
]:
Entering directory `
/
export
/
home
/
zhangll
/
NetBeansProjects
/
CDS
-
JAL
'
gmake -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Solaris
-x86/cds-jal
gmake[2]: Entering directory `/export/home/zhangll/NetBeansProjects/CDS-JAL'
mkdir
-
p build
/
Debug
/
GNU
-
Solaris
-
x86
/
sample
/
src
rm
-
f build
/
Debug
/
GNU
-
Solaris
-
x86
/
sample
/
src
/
DBSelect3
.
o
.
d
gcc
-
m32
-
I
./
sample
/
inc
-
L
/
export
/
home
/
oracle
/
oracle
11g
/
db_1
/
lib32
-
lclntsh
-
c
-
g
-
MMD
-
MP
-
MF build
/
Debug
/
GNU
-
Solaris
-
x86
/
sample
/
src
/
DBSelect3
.
o
.
d
-
o build
/
Debug
/
GNU
-
Solaris
-
x86
/
sample
/
src
/
DBSelect3
.
o sample
/
src
/
DBSelect3
.
c
gcc
:
-
lclntsh
:
リンクが完了しなかったのでリンカの入力ファイルは使われませんでした
mkdir
-
p build
/
Debug
/
GNU
-
Solaris
-
x86
/
sample
/
src
rm
-
f build
/
Debug
/
GNU
-
Solaris
-
x86
/
sample
/
src
/
DBSelect2
.
o
.
d
gcc
-
m32
-
I
./
sample
/
inc
-
L
/
export
/
home
/
oracle
/
oracle
11g
/
db_1
/
lib32
-
lclntsh
-
c
-
g
-
MMD
-
MP
-
MF build
/
Debug
/
GNU
-
Solaris
-
x86
/
sample
/
src
/
DBSelect2
.
o
.
d
-
o build
/
Debug
/
GNU
-
Solaris
-
x86
/
sample
/
src
/
DBSelect2
.
o sample
/
src
/
DBSelect2
.
c
gcc
:
-
lclntsh
:
リンクが完了しなかったのでリンカの入力ファイルは使われませんでした
mkdir
-
p build
/
Debug
/
GNU
-
Solaris
-
x86
/
sample
/
src
rm
-
f build
/
Debug
/
GNU
-
Solaris
-
x86
/
sample
/
src
/
DBSelect1
.
o
.
d
gcc
-
m32
-
I
./
sample
/
inc
-
L
/
export
/
home
/
oracle
/
oracle
11g
/
db_1
/
lib32
-
lclntsh
-
c
-
g
-
MMD
-
MP
-
MF build
/
Debug
/
GNU
-
Solaris
-
x86
/
sample
/
src
/
DBSelect1
.
o
.
d
-
o build
/
Debug
/
GNU
-
Solaris
-
x86
/
sample
/
src
/
DBSelect1
.
o sample
/
src
/
DBSelect1
.
c
gcc
:
-
lclntsh
:
リンクが完了しなかったのでリンカの入力ファイルは使われませんでした
mkdir
-
p dist
/
Debug
/
GNU
-
Solaris
-
x86
gcc
-
m32
-
I
./
sample
/
inc
-
L
/
export
/
home
/
oracle
/
oracle
11g
/
db_1
/
lib32
-
lclntsh
-
o dist
/
Debug
/
GNU
-
Solaris
-
x86
/
cds
-
jal build
/
Debug
/
GNU
-
Solaris
-
x86
/
sample
/
src
/
main
.
o build
/
Debug
/
GNU
-
Solaris
-
x86
/
sample
/
src
/
DBSelect3
.
o build
/
Debug
/
GNU
-
Solaris
-
x86
/
sample
/
src
/
DBSelect2
.
o build
/
Debug
/
GNU
-
Solaris
-
x86
/
sample
/
src
/
DBSelect1
.
o build
/
Debug
/
GNU
-
Solaris
-
x86
/
sample
/
src
/
FileIO
.
o
gmake
[
2
]:
Leaving directory `
/
export
/
home
/
zhangll
/
NetBeansProjects
/
CDS
-
JAL
'
gmake[1]: Leaving directory `/export/home/zhangll/NetBeansProjects/CDS-JAL'
构筑 成功。 终了値 0。
/
export
/
home
/
zhangll
/
NetBeansProjects
/
CDS
-
JAL で
"/export/home/zhangll/NetBeansProjects/CDS-JAL/dist/Debug/GNU-Solaris
-x86/cds-jal"
を実行中
----------------------------
select01
()
ename
=
[
FORD
]
----------------------------
select02
()
empno ename job mgr hirdate sal comm deptno
7902 FORD ANALYST 7566 1981
/
12
/
03 00
:
00
:
00 3000
.
00
-
99999
.
99 20
----------------------------
select03
()
empno ename job mgr hirdate sal comm deptno
7369 SMITH CLERK 7902 1980
/
12
/
17 00
:
00
:
00 800
.
00
-
99999
.
99 20
7499 ALLEN SALESMAN 7698 1981
/
02
/
20 00
:
00
:
00 1600
.
00 300
.
00 30
7521 WARD SALESMAN 7698 1981
/
02
/
22 00
:
00
:
00 1250
.
00 500
.
00 30
7566 JONES MANAGER 7839 1981
/
04
/
02 00
:
00
:
00 2975
.
00
-
99999
.
99 20
7654 MARTIN SALESMAN 7698 1981
/
09
/
28 00
:
00
:
00 1250
.
00 1400
.
00 30
7698 BLAKE MANAGER 7839 1981
/
05
/
01 00
:
00
:
00 2850
.
00
-
99999
.
99 30
7782 CLARK MANAGER 7839 1981
/
06
/
09 00
:
00
:
00 2450
.
00
-
99999
.
99 10
7788 SCOTT ANALYST 7566 1987
/
04
/
19 00
:
00
:
00 3000
.
00
-
99999
.
99 20
7839 KING PRESIDENT
-
9999 1981
/
11
/
17 00
:
00
:
00 5000
.
00
-
99999
.
99 10
7844 TURNER SALESMAN 7698 1981
/
09
/
08 00
:
00
:
00 1500
.
00 0
.
00 30
7876 ADAMS CLERK 7788 1987
/
05
/
23 00
:
00
:
00 1100
.
00
-
99999
.
99 20
7900 JAMES CLERK 7698 1981
/
12
/
03 00
:
00
:
00 950
.
00
-
99999
.
99 30
7902 FORD ANALYST 7566 1981
/
12
/
03 00
:
00
:
00 3000
.
00
-
99999
.
99 20
7934 MILLER CLERK 7782 1982
/
01
/
23 00
:
00
:
00 1300
.
00
-
99999
.
99 10
実行 成功。 终了値 0。
|
源文件
DBSelect1.c
|
文件: |
proc.zip |
大小: |
65KB |
下载: |
下载 |
|
#
include
<
sqlca.
h>
#
include
<
stdio.
h>
#
include
<
string
.
h>
/* 1. get an instance of struct SQLCA */
EXEC SQL INCLUDE
SQLCA;
int
perr01(
const
char
*
msg)
{
printf
(
"Error occured when %s\n"
,
msg)
;
printf
(
"{\n"
)
;
printf
(
" sqlcaid = %s\n"
,
sqlca.
sqlcaid)
;
printf
(
" sqlabc = %d\n"
,
sqlca.
sqlabc)
;
printf
(
" sqlcode = %d\n"
,
sqlca.
sqlcode)
;
printf
(
" sqlerrm.sqlerrml = %d\n"
,
sqlca.
sqlerrm.
sqlerrml)
;
printf
(
" sqlerrm.sqlerrmc = %s\n"
,
sqlca.
sqlerrm.
sqlerrmc)
;
printf
(
" sqlerrp = %s\n"
,
sqlca.
sqlerrp)
;
printf
(
" sqlerrd = %d\n"
,
sqlca.
sqlerrd)
;
printf
(
" sqlwarn = %s\n"
,
sqlca.
sqlwarn)
;
printf
(
" sqlext = %s\n"
,
sqlca.
sqlext)
;
printf
(
"}\n"
)
;
return
1;
}
int
notfound01(
)
{
return
2;
}
void
select01(
)
{
printf
(
"----------------------------select01()\n"
)
;
char
buf[
1024]
;
int
errorFlag =
0;
int
notFoundFlag =
0;
/* 2. declare host variables */
EXEC SQL BEGIN DECLARE SECTION;
char
user[
20]
=
"scott"
;
char
passwd[
20]
=
"123456"
;
char
dbStr[
20]
=
"JAL"
;
int
empno=
7902;
VARCHAR ename[
11]
;
EXEC SQL END DECLARE SECTION;
/* 3. connect DB server */
char
*
msg =
"connect db"
;
EXEC SQL WHENEVER SQLERROR DO
errorFlag=
perr01(
msg)
;
/* connection error*/
EXEC SQL CONNECT
:
user IDENTIFIED BY :
passwd USING
:
dbStr ;
if
(
errorFlag)
{
exit
(
errorFlag)
;
}
/* 4. query DB */
EXEC SQL WHENEVER SQLERROR DO
errorFlag =
perr01(
"query DB"
)
;
/* query error*/
EXEC SQL WHENEVER NOT
FOUND DO
notFoundFlag =
notfound01(
)
;
memset
(
ename.
arr,
NULL
,
11)
;
EXEC SQL SELECT
ENAME INTO :
ename FROM EMP WHERE EMPNO =
:
empno;
if
(
errorFlag)
{
exit
(
errorFlag)
;
}
/* 5. handle data */
if
(
notFoundFlag)
{
printf
(
"Not found employee[EMPNO=%d]\n"
,
empno)
;
}
else
{
memset
(
buf,
NULL
,
11)
;
memcpy
(
buf,
ename.
arr,
ename.
len)
;
printf
(
"ename = [%s]\n"
,
buf)
;
}
/* 6. disconnect DB */
EXEC SQL ROLLBACK WORK RELEASE ;
}
|
DBSelect2.sc
#
include
<
sqlca.
h>
#
include
<
stdio.
h>
#
include
<
string
.
h>
/* 1. get an instance of struct SQLCA */
EXEC SQL INCLUDE
SQLCA;
EXEC SQL BEGIN DECLARE SECTION;
typedef
struct
{
int
empno;
/* NUMBER(4) */
char
ename[
10 +
1]
;
/* VARCHAR2(10) */
char
job[
9 +
1]
;
/* VARCHAR2(9) */
int
mgr;
/* NUMBER(4) */
char
hiredate[
30]
;
/* DATE */
double
sal;
/* NUMBER(7,2) */
double
comm;
/* NUMBER(7,2) */
int
deptno;
/* NUMBER(4) */
}
Emp02;
typedef
struct
{
short
empno;
short
ename;
short
job;
short
mgr;
short
hiredate;
short
sal;
short
comm;
short
deptno;
}
IdcEmp02;
EXEC SQL END DECLARE SECTION;
int
perr02(
const
char
*
msg)
{
printf
(
"Error occured when %s\n"
,
msg)
;
printf
(
"{\n"
)
;
printf
(
" sqlcaid = %s\n"
,
sqlca.
sqlcaid)
;
printf
(
" sqlabc = %d\n"
,
sqlca.
sqlabc)
;
printf
(
" sqlcode = %d\n"
,
sqlca.
sqlcode)
;
printf
(
" sqlerrm.sqlerrml = %d\n"
,
sqlca.
sqlerrm.
sqlerrml)
;
printf
(
" sqlerrm.sqlerrmc = %s\n"
,
sqlca.
sqlerrm.
sqlerrmc)
;
printf
(
" sqlerrp = %s\n"
,
sqlca.
sqlerrp)
;
printf
(
" sqlerrd = %d\n"
,
sqlca.
sqlerrd)
;
printf
(
" sqlwarn = %s\n"
,
sqlca.
sqlwarn)
;
printf
(
" sqlext = %s\n"
,
sqlca.
sqlext)
;
printf
(
"}\n"
)
;
return
1;
}
int
notfound02(
)
{
return
2;
}
void
select02(
)
{
printf
(
"----------------------------select02()\n"
)
;
char
buf[
1024]
;
int
errorFlag =
0;
int
notFoundFlag =
0;
/* 2. declare host variables */
EXEC SQL BEGIN DECLARE SECTION;
/* using for connect DB*/
char
user[
20]
=
"scott"
;
char
passwd[
20]
=
"123456"
;
char
dbStr[
20]
=
"JAL"
;
int
empno=
7902;
Emp02 emp;
IdcEmp02 idcEmp;
EXEC SQL END DECLARE SECTION;
/* 3. connect DB server */
char
*
msg =
"connect db"
;
EXEC SQL WHENEVER SQLERROR DO
errorFlag=
perr02(
msg)
;
EXEC SQL CONNECT
:
user IDENTIFIED BY :
passwd USING
:
dbStr ;
if
(
errorFlag)
{
exit
(
errorFlag)
;
}
/* 4. query DB */
EXEC SQL WHENEVER SQLERROR DO
errorFlag =
perr02(
"query DB"
)
;
EXEC SQL WHENEVER NOT
FOUND DO
notFoundFlag =
notfound02(
)
;
/*EXEC SQL SELECT EMPNO, ENAME, JOB, MGR, TO_CHAR(HIREDATE,'YYYY/MM/DD HH24:MI:SS'), SAL, COMM, DEPTNO
INTO :emp.empno:idcEmp.empno, :emp.ename:idcEmp.ename,
:emp.job:idcEmp.job, :emp.mgr:idcEmp.mgr, :emp.hiredate:idcEmp.hiredate,
:emp.sal:idcEmp.sal, :emp.comm:idcEmp.comm, :emp.deptno:idcEmp.deptno
FROM EMP WHERE EMPNO = :empno;*/
EXEC SQL SELECT
EMPNO,
ENAME,
JOB,
MGR,
TO_CHAR(
HIREDATE,
'YYYY/MM/DD HH24:MI:SS'
)
,
SAL,
COMM,
DEPTNO
INTO :
emp INDICATOR :
idcEmp
FROM EMP
WHERE EMPNO =
:
empno;
if
(
errorFlag)
{
exit
(
errorFlag)
;
}
/* 5. handle data */
if
(
notFoundFlag)
{
printf
(
"Not found employee[EMPNO=%d]\n"
,
empno)
;
}
else
{
printf
(
"%-5s %-10s %-10s %-5s %-20s %-10s %-10s %-5s \n"
,
"empno"
,
"ename"
,
"job"
,
"mgr"
,
"hirdate"
,
"sal"
,
"comm"
,
"deptno"
)
;
emp.
hiredate[
19]
=
NULL
;
printf
(
"%-5d %-10s %-10s %-5d %-20s %-10.2f %-10.2f %-5d \n"
,
emp.
empno,
emp.
ename,
emp.
job,
-
1 =
=
idcEmp.
mgr ?
-
9999 :
emp.
mgr,
-
1 =
=
idcEmp.
hiredate ?
""
:
emp.
hiredate,
-
1 =
=
idcEmp.
sal ?
-
99999.
99 :
emp.
sal,
-
1 =
=
idcEmp.
comm ?
-
99999.
99 :
emp.
comm,
-
1 =
=
idcEmp.
deptno ?
-
99 :
emp.
deptno)
;
}
/* 6. disconnect DB */
EXEC SQL ROLLBACK WORK RELEASE ;
}
|
DBSelect3.sc
#include
<
sqlca.
h>
#include
<
stdio.
h>
#include
<
string.
h>
/*
1.
get an instance of
struct
SQLCA *
/
EXEC SQL INCLUDE
SQLCA;
EXEC SQL BEGIN DECLARE SECTION;
typedef
struct
{
int
empno;
/*
NUMBER(
4)
*
/
char ename[
10 +
1]
;
/*
VARCHAR2(
10)
*
/
char job[
9 +
1]
;
/*
VARCHAR2(
9)
*
/
int
mgr;
/*
NUMBER(
4)
*
/
char hiredate[
30]
;
/*
DATE *
/
double sal
;
/*
NUMBER(
7,
2)
*
/
double comm;
/*
NUMBER(
7,
2)
*
/
int
deptno;
/*
NUMBER(
4)
*
/
} Emp03;
typedef
struct
{
short
empno;
short
ename;
short
job;
short
mgr;
short
hiredate;
short
sal
;
short
comm;
short
deptno;
} IdcEmp03;
EXEC SQL END DECLARE SECTION;
int
perr03(
const char *
msg)
{
printf(
"Error occured when %s\n"
,
msg)
;
printf(
"{\n"
)
;
printf(
" sqlcaid = %s\n"
,
sqlca.
sqlcaid)
;
printf(
" sqlabc = %d\n"
,
sqlca.
sqlabc)
;
printf(
" sqlcode = %d\n"
,
sqlca.
sqlcode)
;
printf(
" sqlerrm.sqlerrml = %d\n"
,
sqlca.
sqlerrm.
sqlerrml)
;
printf(
" sqlerrm.sqlerrmc = %s\n"
,
sqlca.
sqlerrm.
sqlerrmc)
;
printf(
" sqlerrp = %s\n"
,
sqlca.
sqlerrp)
;
printf(
" sqlerrd = %d\n"
,
sqlca.
sqlerrd)
;
printf(
" sqlwarn = %s\n"
,
sqlca.
sqlwarn)
;
printf(
" sqlext = %s\n"
,
sqlca.
sqlext)
;
printf(
"}\n"
)
;
return 1;
} int
notfound03(
)
{
return 2;
}
void select03(
)
{
printf(
"----------------------------select03()\n"
)
;
char buf[
1024]
;
int
errorFlag =
0;
int
notFoundFlag =
0;
/*
2.
declare host variables *
/
EXEC SQL BEGIN DECLARE SECTION;
/*
using for
connect DB*
/
char user[
20]
=
"scott"
;
char passwd[
20]
=
"123456"
;
char dbStr[
20]
=
"JAL"
;
int
empno=
7902;
Emp03 emp;
IdcEmp03 idcEmp;
EXEC SQL END DECLARE SECTION;
/*
3.
connect DB server *
/
char *
msg =
"connect db"
;
EXEC SQL WHENEVER SQLERROR DO errorFlag=
perr03(
msg)
;
EXEC SQL CONNECT :
user IDENTIFIED BY :
passwd USING :
dbStr ;
if
(
errorFlag)
{
exit(
errorFlag)
;
}
/*
4.
query DB *
/
EXEC SQL SELECT EMPNO,
ENAME,
JOB,
MGR,
TO_CHAR(
HIREDATE,
'YYYY/MM/DD HH24:MI:SS'
)
,
SAL
,
COMM,
DEPTNO
INTO
:
emp INDICATOR :
idcEmp
FROM EMP
WHERE EMPNO =
:
empno;
EXEC SQL DECLARE C1 CURSOR FOR
SELECT EMPNO,
ENAME,
JOB,
MGR,
TO_CHAR(
HIREDATE,
'YYYY/MM/DD HH24:MI:SS'
)
,
SAL
,
COMM,
DEPTNO
FROM SCOTT.
EMP;
EXEC SQL OPEN C1;
EXEC SQL WHENEVER SQLERROR DO errorFlag =
perr03(
"query DB"
)
;
EXEC SQL WHENEVER NOT
FOUND DO notFoundFlag =
notfound03(
)
;
printf(
"%-5s %-10s %-10s %-5s %-20s %-10s %-10s %-5s \n"
,
"empno"
,
"ename"
,
"job"
,
"mgr"
,
"hirdate"
,
"sal"
,
"comm"
,
"deptno"
)
;
do{
EXEC SQL FETCH C1 INTO
:
emp INDICATOR :
idcEmp;
if
(
!
errorFlag && !
notFoundFlag)
{
/*
5.
handle data *
/
printf(
"%-5d %-10s %-10s %-5d %-20s %-10.2f %-10.2f %-5d \n"
,
emp.
empno,
emp.
ename,
emp.
job,
-
1 =
=
idcEmp.
mgr ?
-
9999 :
emp.
mgr,
-
1 =
=
idcEmp.
hiredate ?
""
:
emp.
hiredate,
-
1 =
=
idcEmp.
sal
?
-
99999.
99 :
emp.
sal
,
-
1 =
=
idcEmp.
comm ?
-
99999.
99 :
emp.
comm,
-
1 =
=
idcEmp.
deptno ?
-
99 :
emp.
deptno)
;
}
}while
(
!
errorFlag && !
notFoundFlag)
;
EXEC SQL CLOSE C1;
if
(
errorFlag)
{
exit(
errorFlag)
;
}
/*
6.
disconnect DB *
/
EXEC SQL ROLLBACK WORK RELEASE ;
}
|
|
相关推荐
### ORACLE傻瓜手册知识点概览 #### 一、Oracle版本概述 ...- **2002/12 版本2.0**:全面升级了内容结构,新增了Oracle9i安装配置、OCI开发、MySQL安装配置开发等主题,并补充了数据库优化、PROC开发等方面的资料。
- **版本1.5** (2002/04): 进一步优化了数据库优化和多线程条件下的数据库编程指南,并分离了附录中的程序示例。 - **版本2.0** (2002/12): 重新组织内容结构,增加了Oracle 9i安装配置、OCI开发、MySQL安装配置与...
- 示例运行环境:Oracle8i在Solaris8 Intel Platform + Oracle8i R3上,Oracle9i在Red Hat Linux 7.3 + Oracle9i R2上。 - **示例文件**包含在sample.tar文件中。 #### 三、示例表结构:EMP - **表结构**:包含no...
### Oracle Tracing:深入理解DTrace在Oracle Solaris、Mac OS X及FreeBSD中的动态追踪技术 #### 引言 随着计算机系统复杂性的不断提高,软件开发者和系统管理员面临着越来越多的挑战,尤其是在性能调优和故障排查...
手册中的所有示例均基于特定的操作系统平台运行:Oracle8i在Solaris8IntelPlatform+Oracle8iR3上验证,而Oracle9i则在RedHatLinux7.3+Oracle9iR2上测试。 ### 安装与配置 手册详细描述了Oracle在不同操作系统上的...
- Oracle数据库的安装通常包括以下几个步骤:环境准备、安装介质验证、运行安装程序、配置选项设置以及最终的配置验证等。 - 对于内部用户,可以通过`/internal/oracle/sys/change_on_install/system/managerscott...
- **1.1 通用设置**:包括创建文件系统时需考虑Oracle对交换分区的需求,一般每个Oracle服务进程需要约10-20MB的交换空间;建立`dba`组和`oracle`用户;确定Oracle软件的安装位置(如`/oracle`)。 - **1.2 UnixWare...
- **Oracle(Sun) Solaris:** 用于电信行业。 - **IBM AIX:** 用于小型机。 - **HP HP-UX:** 适用于高性能计算领域。 #### GNU项目与自由软件基金会(FSF) - **GNU项目:** GNU(GNU's Not Unix)是由Richard ...
3. **基于磁盘的缓冲机制**:在网络中断情况下,Syslog-ng能够在本地磁盘暂存日志数据,待网络恢复后继续发送,保证了日志顺序的正确性。该功能同样仅在高级版中可用。 4. **直接数据库接入**:支持将日志数据直接...