$ proc sample9.pc SQLCHECK=SEMANTICS
Pro*C/C++: Release 11.2.0.1.0 - Production on Tue Jan 8 15:18:40 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
System default option values taken from: /usr/local/oracle/product/11.2.0/dbhome_1/precomp/admin/pcscfg.cfg
Error at line 116, column 19 in file sample9.pc
BEGIN calldemo.get_employees
..................1
PLS-S-00201, identifier 'CALLDEMO.GET_EMPLOYEES' must be declared
Error at line 116, column 19 in file sample9.pc
BEGIN calldemo.get_employees
..................1
PLS-S-00000, Statement ignored
Semantic error at line 116, column 13, file sample9.pc:
BEGIN calldemo.get_employees
............1
PCC-S-02346, PL/SQL found semantic errors
$
错误原因:需要指定 “CALLDEMO.GET_EMPLOYEES” 的所属用户。
解决办法:在预编译时加上 userid=name/passwd@remoteDB (如果是连接到本地数据库则不需要@remoteDB)。
如上面的例子:
$ proc sample9.pc SQLCHECK=SEMANTICS userid=scott/tiger
Pro*C/C++: Release 11.2.0.1.0 - Production on Tue Jan 8 15:25:20 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
System default option values taken from: /usr/local/oracle/product/11.2.0/dbhome_1/precomp/admin/pcscfg.cfg
$
编译通过!