代码如下:
int db_insert(char *eq_guid, char *unit, char *type, char *time, int status, float value)
{
EXEC SQL INCLUDE sqlca;
// EXEC SQL BEGIN DECLARE SECTION;
// char *guid = eq_guid;
// char *t_unit = unit;
// char *t_type = type;
// char *t_time = time;
// char t_status = status;
// float t_value = value;
// EXEC SQL END DECLARE SECTION;
EXEC SQL EXECUTE
BEGIN
P_DATE_RT(eq_guid, unit, type, time, status, value);
END;
END-EXEC;
}编译语句: proc iname=ora_proc.pc sqlcheck=semantics userid=agelon/agelon123@ORCL报错:Error at line 164, column 14 in file ora_proc.pc
P_DATE_RT(eq_guid, unit, type, time, status, value);
.............1
PLS-S-00201, identifier 'EQ_GUID' must be declared
Error at line 164, column 4 in file ora_proc.pc
P_DATE_RT(eq_guid, unit, type, time, status, value);
...1
PLS-S-00000, Statement ignored
Semantic error at line 163, column 3, file ora_proc.pc:
BEGIN
..1
PCC-S-02346, PL/SQL found semantic errors找了很久的错误 还是不知道为什么,请哪个大神帮忙给看看
int db_insert(char *eq_guid, char *unit, char *type, char *time, int status, float value)
{
EXEC SQL INCLUDE sqlca;
// EXEC SQL BEGIN DECLARE SECTION;
// char *guid = eq_guid;
// char *t_unit = unit;
// char *t_type = type;
// char *t_time = time;
// char t_status = status;
// float t_value = value;
// EXEC SQL END DECLARE SECTION;
EXEC SQL EXECUTE
BEGIN
P_DATE_RT(eq_guid, unit, type, time, status, value);
END;
END-EXEC;
}编译语句: proc iname=ora_proc.pc sqlcheck=semantics userid=agelon/agelon123@ORCL报错:Error at line 164, column 14 in file ora_proc.pc
P_DATE_RT(eq_guid, unit, type, time, status, value);
.............1
PLS-S-00201, identifier 'EQ_GUID' must be declared
Error at line 164, column 4 in file ora_proc.pc
P_DATE_RT(eq_guid, unit, type, time, status, value);
...1
PLS-S-00000, Statement ignored
Semantic error at line 163, column 3, file ora_proc.pc:
BEGIN
..1
PCC-S-02346, PL/SQL found semantic errors找了很久的错误 还是不知道为什么,请哪个大神帮忙给看看
这个P_DATE_RT 方法一共是6个参数,参数类型,分别是:varchar 、varchar 、varchar 、varchar 、interger、number
我感觉我传的参数没问题,但是还是报错 谢谢
这个P_DATE_RT 方法一共是6个参数,参数类型,分别是:varchar 、varchar 、varchar 、varchar 、interger、number
我感觉我传的参数没问题,但是还是报错 谢谢
这个P_DATE_RT 方法一共是6个参数,参数类型,分别是:varchar 、varchar 、varchar 、varchar 、interger、number
我感觉我传的参数没问题,但是还是报错 谢谢但是你insert()传递进来的参数有指针类型的
这个P_DATE_RT 方法一共是6个参数,参数类型,分别是:varchar 、varchar 、varchar 、varchar 、interger、number
我感觉我传的参数没问题,但是还是报错 谢谢但是你insert()传递进来的参数有指针类型的
哦哦 不好意思 我表述错了参数类型,分别是:varchar2(50) 、varchar2(50) 、varchar2(50) 、varchar2(50) 、interger、number
所以我才传的 指针类型的
这个P_DATE_RT 方法一共是6个参数,参数类型,分别是:varchar 、varchar 、varchar 、varchar 、interger、number
我感觉我传的参数没问题,但是还是报错 谢谢但是你insert()传递进来的参数有指针类型的
哦哦 不好意思 我表述错了参数类型,分别是:varchar2(50) 、varchar2(50) 、varchar2(50) 、varchar2(50) 、interger、number
所以我才传的 指针类型的 varchar和varchar2(50)没什么区别,本质上都可以理解为char,还是实参与形参类型不一致的问题。最简单的就是你先对指针做取值运算,然后再传值。即:P_DATE_RT(:(*eq_guid), :(*unit), :(*type), :(*time), status, value);
这个P_DATE_RT 方法一共是6个参数,参数类型,分别是:varchar 、varchar 、varchar 、varchar 、interger、number
我感觉我传的参数没问题,但是还是报错 谢谢但是你insert()传递进来的参数有指针类型的
哦哦 不好意思 我表述错了参数类型,分别是:varchar2(50) 、varchar2(50) 、varchar2(50) 、varchar2(50) 、interger、number
所以我才传的 指针类型的 varchar和varchar2(50)没什么区别,本质上都可以理解为char,还是实参与形参类型不一致的问题。最简单的就是你先对指针做取值运算,然后再传值。即:P_DATE_RT(:(*eq_guid), :(*unit), :(*type), :(*time), status, value);我尝试用下面的方法结果还是出错:
int db_insert(char *eq_guid, char *unit, char *type, char *time, int status, float value)
{
EXEC SQL INCLUDE sqlca;
EXEC SQL BEGIN DECLARE SECTION;
char *guid = &eq_guid;
char **t_unit = &unit;
char **t_type = &type;
char **t_time = &time;
char t_status = status;
float t_value = value; EXEC SQL END DECLARE SECTION;
EXEC SQL EXECUTE
BEGIN
P_DATE_RT(:(*guid), :(*t_unit), :(*t_type), :(*t_time), :status, :value);
END;
END-EXEC;
}报错内容:
Semantic error at line 164, column 15, file ora_proc.pc:
P_DATE_RT(:(*guid), :(*t_unit), :(*t_type), :(*t_time),
:status, :value);
..............1
PCC-S-02322, found undefined identifier
P_DATE_RT(:(*guid), :(*t_unit), :(*t_type), :(*t_time),
:status, :value);
................1
PLS-S-00103, Encountered the symbol ":" when expecting one of the following: ( ) - + case mod new not null others <an identifier>
<a double-quoted delimited-identifier> <a bind variable>
table avg count current exists max min prior sql stddev sum
variance execute multiset the both leading trailing forall
merge year month DAY_ hour minute second timezone_hour
timezone_minute timezone_region timezone_abbr time timestamp
interval date
<a string literal with character set specification>
<a number> <a single-quoted SQL string> pipe
<an alternatively-quoted string literal with character set specification>
<an alternatively-quoted SQL string>Semantic error at line 163, column 3, file ora_proc.pc:
BEGIN
..1
PCC-S-02347, PL/SQL found syntax errors
char **t_unit = &unit;
char **t_type = &type;
char **t_time = &time;
你这些定义都是有问题,建议你先看看C的指针部分,彻底把指针理解清楚了。我不知道你想传递什么数据,类型上,下面这么写应该是没问题的:int db_insert(char *eq_guid, char *unit, char *type, char *time, int status, float value)
{
EXEC SQL INCLUDE sqlca;
EXEC SQL BEGIN DECLARE SECTION;
//char *guid = &eq_guid;
//char **t_unit = &unit;
//char **t_type = &type;
//char **t_time = &time;
//char t_status = status;
//float t_value = value; EXEC SQL END DECLARE SECTION;
EXEC SQL EXECUTE
BEGIN
P_DATE_RT(:(*eq_guid), :(*unit), :(*type), :(*time), :status, :value);
END;
END-EXEC;
}另外,你的函数是有返回值得吗,如果没有需要用void定义insert函数
int db_insert(char *eq_guid, char *unit, char *type, char *time, int status, float value)
{
EXEC SQL INCLUDE sqlca;
EXEC SQL BEGIN DECLARE SECTION;
char t_guid = *eq_guid;
char t_unit = *unit;
char t_type = *type;
char t_time = *time;
int t_status = status;
float t_value = value;
EXEC SQL END DECLARE SECTION;
EXEC SQL EXECUTE
BEGIN
P_DATE_RT(:t_guid , :t_unit , :t_type , :t_time , :t_status , :t_value );
END;
END-EXEC;
}
http://blog.csdn.net/smallboy_5/article/details/3044255