在ESQL应用程序中使用cursor update,为什么发生错误?

~ 0 min
2016-02-23 07:50

例如:

表模式如下:

dmSQL> def table card1;

create table SYSADM.CARD1 (

 NUM  SERIAL(1),

 DD  INTEGER not null,

 EE  CHAR(1) not null,

 FIRSTNAME  VARCHAR(30) not null,

 LASTNAME  VARCHAR(30) not null  ,

 TITLE  VARCHAR(30) default null ,

 BMP  LONG VARBINARY default null )

 in DEFTABLESPACE  lock mode page  fillfactor 100 ;

alter table SYSADM.CARD1 primary key ( NUM, DD, EE, FIRSTNAME);

编写ESQL/C代码:

EXEC SQL declare scroll_cursor scroll cursor for

      select Num,dd,ee,LastName, FirstName from Card1

      where NUM < 9 order by EE,NUM, DD,FIRSTNAME 

      into :Num, :LastName :indvalue, :FirstName :indvalue

      for update of LastName;

上面的ESQL/C代码返回错误。

 

 当使用Cursor update,有两个限制:

  1. ORDER BY子句中的字段必须是索引字段。
  2. 如果在OERDER BY子句中有多个字段,这些字段的顺序必须同于索引的定义顺序。

所以,上面例子中的ORDER BY子句应该改为:

Create an index with then same sequence with NUM, DD, EE, FIRSTNAME

Order by NUM, DD, EE, FIRSTNAME

以保证顺序与索引定义顺序一致。

平均分: 0 (0 投票)

你不能对该内容发表评论

标签