存储过程中这句在10g中报错了,错误信息是:此表达式的类型声明不完整或格式不正确
select count(*) into var_cur_count from t_budgetvoucher
在11g中是正确的。说明这个表中有字段类型,10g是不支持的,11g是支持的。
我把完整的表结构发出来,大家帮忙看看,谢谢了。CREATE TABLE "MANU2"."T_BUDGETVOUCHER" 
   ( "GUID" VARCHAR2(38) NOT NULL ENABLE, 
"FROMCTRLID" VARCHAR2(38), 
"TOCTRLID" VARCHAR2(38), 
"VOUTYPEID" VARCHAR2(38), 
"BDGYEAR" NUMBER, 
"BDGDOCNO" VARCHAR2(38), 
"BDGDOCDATE" VARCHAR2(10), 
"BDGTITLE" VARCHAR2(200), 
"PROGRAMETYPE" VARCHAR2(38), 
"PROGRAME" VARCHAR2(38), 
"CCID" NUMBER(9,0), 
"INPUTAMT" NUMBER(10,2), 
"CHECKAMT" NUMBER(10,2), 
"ISVALID" NUMBER(1,0), 
"ISEND" NUMBER(1,0), 
"APPROVEDATE" VARCHAR2(10), 
"CREATEDATE" DATE, 
"CREATEUSER" VARCHAR2(38), 
"LATESTOPDATE" DATE, 
"LATESTOPUSER" VARCHAR2(38), 
"AUTOREALPAY" NUMBER, 
"BGTADJUST" NUMBER(1,0), 
"BUDGETTYPE" NUMBER(1,0), 
"BGTVALID" NUMBER(1,0), 
"INPUTTYPE" NUMBER, 
"BILLID" VARCHAR2(38), 
"ADJUSTWAY" NUMBER(1,0), 
"DIGET" VARCHAR2(200), 
"PRINTBILL" NUMBER, 
"TIMESTAMP" TIMESTAMP (6)
)

解决方案 »

  1.   

    TIMESTAMP 这个类型,不知道 10g 支不支持,你试下改为 date 类型
      

  2.   


    --用之前,要先declare 一下!-- Created on 2011-11-9 by QIUDF 
    declare 
      -- Local variables here
      i number;
    begin
      -- Test statements here
      select count(1) into i from qiudf_alarms;
      dbms_output.put_line(i);
    end;
      

  3.   

    TIMESTAMP 这个类型  9i都支持,应该不是这个问题!
      

  4.   

    我大致知道问题在哪了 应该是命名的问题
    "TIMESTAMP" TIMESTAMP (6)
    这个类型是没有问题的,但是不能命名为"TIMESTAMP" ,晚上找别人的机子试下。到时没有问题就结贴
      

  5.   

    select count(guid) into var_cur_count from t_budgetvoucher
      

  6.   

    就是"TIMESTAMP" TIMESTAMP (6)这的问题。把名字"TIMESTAMP"改成别的就行了,不要TIMESTAMP,否则存储过程会报错。谢谢大家了,结贴。