建立类型
create or replace type emp_type as object
(
name varchar2(10),
salary number(6,2),
hiredate date
);建立嵌套表
create or replace type emp_array is table of emp_type;建立数据表
drop table department;
create table department
(
deptno number(2) primary key,
dname varchar2(10),
employee emp_array
)nested table employee store as employee;预编译参数
proc $(InputDir)\$(InputName) sqlcheck=full userid=scott/password@exam intype=$(InputDir)\demoout.typ include=$(InputDir)【出错代码段一】:
/* 定义宿主变量 */
emp_array* employee_array;
emp_type* employee[20];
int deptno;
char name[10];
char temp[10];
/* ... */
/* 输入deptno和name */
/* ... */
/* 集合列->对象高速缓存 */
exec sql select deptno , employee into :deptno , :employee_array
from department p , table(p.employee) e
where upper(e.name) = upper(:name);【proc给出的错误信息是】:
错误发生在行227, 列2, 文件.\demo16.pc
exec sql select deptno , employee into :deptno , :employee_array
.1
PLS-S-00201, 必须声明标识符 'P.EMPLOYEE'
错误发生在行227, 列2, 文件.\demo16.pc
exec sql select deptno , employee into :deptno , :employee_array
.1
PLS-S-00000, SQL Statement ignored
在第 227 行, 第 2 列, 文件 .\demo16.pc 有语义错误:
exec sql select deptno , employee into :deptno , :employee_array
.1【出错代码段二】:
/* 定义宿主变量 */
emp_array* employee_array;
emp_type employee[20];
emp_type* employee_temp;
int deptno;
char name[10];
char temp[10];
int salary;
char hiredate[20];
int count;
int i;
/* ... */
/* ... */
/* 取得元素属性 */
exec sql object get * from :employee[i] into :temp , :salary , :hiredate;【proc给出的错误信息是】:
PCC-S-02346, PL/SQL 发现语义错误
在第 306 行, 第 31 列, 文件 .\demo16.pc 有语义错误:
exec sql object get * from :employee[i] into :temp , :salary , :
hiredate;
..............................1
PCC-S-02326, 非法的结构引用操作
在第 306 行, 第 31 列, 文件 .\demo16.pc 有语义错误:
exec sql object get * from :employee[i] into :temp , :salary , :
hiredate;
..............................1
PCC-S-02326, 非法的结构引用操作
在第 306 行, 第 31 列, 文件 .\demo16.pc 有语义错误:
exec sql object get * from :employee[i] into :temp , :salary , :
hiredate;
..............................1
PCC-S-02326, 非法的结构引用操作
在第 306 行, 第 31 列, 文件 .\demo16.pc 有语义错误:
exec sql object get * from :employee[i] into :temp , :salary , :
hiredate;
..............................1
PCC-S-02326, 非法的结构引用操作
在第 306 行, 第 31 列, 文件 .\demo16.pc 有语义错误:
exec sql object get * from :employee[i] into :temp , :salary , :
hiredate;
..............................1
PCC-S-02326, 非法的结构引用操作
在第 306 行, 第 31 列, 文件 .\demo16.pc 有语义错误:
exec sql object get * from :employee[i] into :temp , :salary , :
hiredate;
..............................1
PCC-S-02326, 非法的结构引用操作
在第 306 行, 第 3 列, 文件 .\demo16.pc 有语义错误:
exec sql object get * from :employee[i] into :temp , :salary , :
hiredate;
..1
PCC-S-02413, 属性数与主机变量数不符代码是对着《精通Oracle 10g Pro*C/C++编程》(王海亮,张立民 中国水利水电出版社)这本书书敲的
刚入门,还请高人指点啊。
create or replace type emp_type as object
(
name varchar2(10),
salary number(6,2),
hiredate date
);建立嵌套表
create or replace type emp_array is table of emp_type;建立数据表
drop table department;
create table department
(
deptno number(2) primary key,
dname varchar2(10),
employee emp_array
)nested table employee store as employee;预编译参数
proc $(InputDir)\$(InputName) sqlcheck=full userid=scott/password@exam intype=$(InputDir)\demoout.typ include=$(InputDir)【出错代码段一】:
/* 定义宿主变量 */
emp_array* employee_array;
emp_type* employee[20];
int deptno;
char name[10];
char temp[10];
/* ... */
/* 输入deptno和name */
/* ... */
/* 集合列->对象高速缓存 */
exec sql select deptno , employee into :deptno , :employee_array
from department p , table(p.employee) e
where upper(e.name) = upper(:name);【proc给出的错误信息是】:
错误发生在行227, 列2, 文件.\demo16.pc
exec sql select deptno , employee into :deptno , :employee_array
.1
PLS-S-00201, 必须声明标识符 'P.EMPLOYEE'
错误发生在行227, 列2, 文件.\demo16.pc
exec sql select deptno , employee into :deptno , :employee_array
.1
PLS-S-00000, SQL Statement ignored
在第 227 行, 第 2 列, 文件 .\demo16.pc 有语义错误:
exec sql select deptno , employee into :deptno , :employee_array
.1【出错代码段二】:
/* 定义宿主变量 */
emp_array* employee_array;
emp_type employee[20];
emp_type* employee_temp;
int deptno;
char name[10];
char temp[10];
int salary;
char hiredate[20];
int count;
int i;
/* ... */
/* ... */
/* 取得元素属性 */
exec sql object get * from :employee[i] into :temp , :salary , :hiredate;【proc给出的错误信息是】:
PCC-S-02346, PL/SQL 发现语义错误
在第 306 行, 第 31 列, 文件 .\demo16.pc 有语义错误:
exec sql object get * from :employee[i] into :temp , :salary , :
hiredate;
..............................1
PCC-S-02326, 非法的结构引用操作
在第 306 行, 第 31 列, 文件 .\demo16.pc 有语义错误:
exec sql object get * from :employee[i] into :temp , :salary , :
hiredate;
..............................1
PCC-S-02326, 非法的结构引用操作
在第 306 行, 第 31 列, 文件 .\demo16.pc 有语义错误:
exec sql object get * from :employee[i] into :temp , :salary , :
hiredate;
..............................1
PCC-S-02326, 非法的结构引用操作
在第 306 行, 第 31 列, 文件 .\demo16.pc 有语义错误:
exec sql object get * from :employee[i] into :temp , :salary , :
hiredate;
..............................1
PCC-S-02326, 非法的结构引用操作
在第 306 行, 第 31 列, 文件 .\demo16.pc 有语义错误:
exec sql object get * from :employee[i] into :temp , :salary , :
hiredate;
..............................1
PCC-S-02326, 非法的结构引用操作
在第 306 行, 第 31 列, 文件 .\demo16.pc 有语义错误:
exec sql object get * from :employee[i] into :temp , :salary , :
hiredate;
..............................1
PCC-S-02326, 非法的结构引用操作
在第 306 行, 第 3 列, 文件 .\demo16.pc 有语义错误:
exec sql object get * from :employee[i] into :temp , :salary , :
hiredate;
..1
PCC-S-02413, 属性数与主机变量数不符代码是对着《精通Oracle 10g Pro*C/C++编程》(王海亮,张立民 中国水利水电出版社)这本书书敲的
刚入门,还请高人指点啊。
解决方案 »
- oracle监听问题
- plsql查询效率的问题!急
- 待等有才人士指明Function之纠结路线
- 未说明结合变量,奇怪的问题
- (续)存储过程的出参问题,请继续赐教
- 请问:使用用户A创建的数据表,能否控制只能用户A能对其操作,而不让任何其他用户能浏览、操作数据表的结构、数据等(包括管理员sys,syst
- 新建一数据库,独立登陆OEM看的到,登陆到OMS就看不到,请指教!在线等!
- oracle的存储过程是不是可以返回结果集
- 关于存储过程的问题
- pl/sql 实现ibatis批量插入的SQL语句
- 在自定义函数中,如何使用异常处理?
- 送100分 现场调试,现场结贴 Oracle 下 SQL 语句返回结果不对
在Pro*C中调用PL/SQL的函数时(例如table函数),应该采用sqlcheck的默认值SYNTAX.
注意:只有sqlcheck=full时,才能在Pro*C中嵌入PL/SQL块,
所以如果同一工程还要内嵌PL/SQL块,只能内嵌到其他的PC源文件中,
不同的PC源文件可以采用不同的预编译选项.第二个问题是因为:
emp_array* employee_array;
emp_type employee[20];
emp_type* employee_temp;
以上变量声明有笔误:
emp_type employee[20];
应该写成
emp_type* employee[20];