存储过程中加上这句在10g中就报错了,错误信息是:此表达式的类型声明不完整或格式不正确
select count(*) into var_cur_count from t_budgetvoucher where guid=PARAMS_ENTITYID_VARCHAR2(i) and to_char(TIMESTAMP,'yyyy-mm-dd hh24:mi:ssxff') =PARAMS_TIMESTAMP_VARCHAR2(i);
但是存储过程中类似的一句却是正确的
    select count(*) into var_count from t_wfnodeconditions where WFID=PARAMS_WFID_VARCHAR2(i) and NODEID=PARAMS_CURRENTNODE_VARCHAR2(i);
不知道原因在哪,另外,这两句在11g中都是正确的

解决方案 »

  1.   

    看一下是报什么错啊!然后查询一下GOOGLE!
      

  2.   

    应该是 to_char(TIMESTAMP,'yyyy-mm-dd hh24:mi:ssxff') 引起的错误
    我没有 10g 环境,没办法验证
    10g 不知道支不支持
      

  3.   

    把TIMESTAMP加上双引号试试呢
    select count(*) into var_cur_count from t_budgetvoucher where guid=PARAMS_ENTITYID_VARCHAR2(i) and to_char("TIMESTAMP",'yyyy-mm-dd hh24:mi:ssxff') =PARAMS_TIMESTAMP_VARCHAR2(i);
      

  4.   

    谢谢楼上的,原因在t_budgetvoucher 表,我把表结构发出来,大家帮忙看看,我先去吃饭了
    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),  
    "BGTTITLE" VARCHAR2(200),  
    "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" CHAR(1),  
    "BGTVALID" NUMBER(1,0),  
    "BILLID" VARCHAR2(38),  
    "ADJUSTWAY" NUMBER(1,0),  
    "DIGET" VARCHAR2(200),  
    "PRINTBILL" NUMBER,  
    "TIMESTAMP" TIMESTAMP (6), 
      

  5.   

    select count(*) into var_cur_count from t_budgetvoucher
    这样也报错,把表换成别的表就没事了。所以原因在这个表。表结构在上面,大家帮忙看看啊,谢了
      

  6.   

    应该是授权问题吧,之前遇到过,在sql窗口可以执行,在过程不可以执行,你可以试下!