dbms_sql包取rowid为什么出错?

dbms_sql包取rowid为什么出错?

版本:(oracle8ir2 for linux)
我的代码:
declare
i long;
len number;
str varchar2(32000);
stmt varchar2(1024);
dstr varchar2(2048);
rid rowid;
rid2 rowid;
tt number;
cur number;
rr varchar(20);
begin
stmt:='select content,rowid from forumthread';
dstr:='china';
cur:=dbms_sql.open_cursor;
dbms_sql.parse(cur,stmt,dbms_sql.v7);
dbms_sql.define_column_long(cur,1);
dbms_sql.define_column(cur,2,rid);
tt:=dbms_sql.execute(cur);

loop
tt:=dbms_sql.fetch_rows(cur);
dbms_sql.column_value_long(cur,1,32000,0,str,len);
dbms_sql.column_value_rowid(cur,2,rid);
DBMS_OUTPUT.PUT_LINE (str);
DBMS_OUTPUT.PUT_LINE (len);
DBMS_OUTPUT.PUT_LINE (rid);
exit when len=0;

end loop;

end;
运行报错:
ORA-06562: type of out argument must match type of column or bind variable
ORA-06512: at "SYS.DBMS_SYS_SQL", line 1155
ORA-06512: at "SYS.DBMS_SQL", line 386
ORA-06512: at line 24
可是我明明用的是rowid类型的变量阿,为什么?
      
The type of the given out argument was different from the type of the column or bind variable that was previously defined by calling procedure DEFINE_COLUMN, for defining a column, or BIND_VARIABLE, for binding a bind variable, of package DBMS_SQL.