oracle开发大问题啊!方式采用proc(pc文件)方式,c的。
一旦在pc文件中加入 EXEC SQL LOB WRITE 的语句后,预编译就出错◎◎◎◎。
报告如下错误:
PCC-S-02206, Host variables are not permitted within a DDL statement
Syntax error at line 360, column 15, file service_datatrans.pc:
Error at line 360, column 15 in file service_datatrans.pc
                                        EXEC SQL LOB WRITE ONE :amt FROM :pBlob
INTO :blob AT :offset ;
..............1
PCC-S-02201, Encountered the symbol "LOB" when expecting one of the following:   for, at, close, commit, connect, declare, describe, execute,
   fetch, open, prepare, rollback, select, whenever, alter,
   audit, comment, create, delete, drop, grant, insert, lock,
   noaudit, rename, revoke, set, update, validate, arraylen,
   allocate, cache, context, enable, free, object, savepoint,
   analyze, explain, truncate,
The symbol "alter," was substituted for "LOB" to continue.Parser error at line 360, column 40, file service_datatrans.pc:
Error at line 360, column 40 in file service_datatrans.pc
                                        EXEC SQL LOB WRITE ONE :amt FROM :pBlob
INTO :blob AT :offset ;PCC-S-02206, Host variables are not permitted within a DDL statement
Parser error at line 360, column 61, file service_datatrans.pc:
Error at line 360, column 61 in file service_datatrans.pc
                                        EXEC SQL LOB WRITE ONE :amt FROM :pBlob
INTO :blob AT :offset ;如何环境下才能使用  EXEC SQL LOB WRITE  呢??
我得数据库信息:Select version FROM Product_component_version  
Where SUBSTR(PRODUCT,1,6)='Oracle';  -》》》》》》8.0.5.0.0
其他的语句没有问题,比如:EXEC SQL SELECT T_NAME FROM TABLE_NAME.....是blob类型。我首先插入empty_blob()。采用 exec sql insert into tablename(colname)values(empty_blob());
能成功编译,并执行。
可是在我想update时,采用如下方式:
EXEC SQL ALLOCATE :blob ;
EXEC SQL SELECT colblob INTO :blob FROM tablename WHERE GUID = '111' FOR UPDATE ;
EXEC SQL LOB WRITE ONE :amt FROM :pBlob INTO :blob AT :offset ;
EXEC SQL FREE :blob ;
时,预编译 报错 第三句 。Encountered the symbol "LOB" when expecting one of the followin。如我得问题里描述的那样!
我通过
EXEC SQL SELECT colblob INTO :blob FROM tablename WHERE GUID = '111' FOR UPDATE ;
将字段 colblob与变量blob关联后,如何将一个char buff[10240]的buff内容存入该字段呢?
文档里写可以这样:
amt = 10240 ;
offset = 1 ;
EXEC SQL LOB WRITE ONE :amt FROM :buff INTO :blob AT :offset ;
可是,这句话在预编译时报错!错误内容如帖主所描述。我应该如何将buff(大小10240)的内容存储进入colblob字段里呢??