- 论坛徽章:
- 0
|
问题是这样的:在包过程中定义的in参数类型为record,在sqlplus环境中调用正确通过,我现在想在proc*c程序中调用此包过程,所以定义
了一个宿主结构类型的变量(与记录类型成员一致),但在编译时(pc->;c)报错,提示参数类型不一致“PLS-S-00306, wrong number or types of arguments in call to AA.ABC”
请问怎样在proc*c中定义与包中参数类型一致的宿主变量,或者其他什么解决办法。
部分代码如下:
包过程接口定义:
PACKAGE AA:
type TYPE_REC is record(
m_a test.a%type, /* RAW( */
m_b test.b%type, /* NUMBER(5,2) */
m_c test.c%type /* CHAR(1) */
);
procedure ABC(in_rec IN TYPE_REC);
在proc*c中的定义和调用:
typedef struct{
unsign char m_a[16];
int m_b;
char m_c;
} TYPE_STRUC;
TYPE_STRUC in_rec;
/*
....in_rec赋值
*/
EXEC SQL EXECUTE
BEGIN
AA.ABC(:in_rec);
END;
END-EXEC;
....
注:我如果把包过程接口定义为多个参数(把记录成员分开),然后在proc*c中调用是没有问题的,考虑到我的包程序中有很多过程参数
太多,如果全定义在接口上太乱了,而且调用者也觉得很烦。 |
|