+ -
当前位置:首页 → 问答吧 → 存储过程中的一句错误

存储过程中的一句错误

时间:2011-11-08

来源:互联网

存储过程中加上这句在10g中就报错了,错误信息是:此表达式的类型声明不完整或格式不正确
SQL code
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);

但是存储过程中类似的一句却是正确的
SQL code
    select count(*) into var_count from t_wfnodeconditions where WFID=PARAMS_WFID_VARCHAR2(i) and NODEID=PARAMS_CURRENTNODE_VARCHAR2(i);

不知道原因在哪,另外,这两句在11g中都是正确的

作者: sakuramanu12   发布时间: 2011-11-08

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

作者: cosio   发布时间: 2011-11-08

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

作者: opps_zhou   发布时间: 2011-11-08

把TIMESTAMP加上双引号试试呢
SQL code
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);

作者: tx2730   发布时间: 2011-11-08

谢谢楼上的,原因在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),

作者: sakuramanu   发布时间: 2011-11-08

SQL code
select count(*) into var_cur_count from t_budgetvoucher

这样也报错,把表换成别的表就没事了。所以原因在这个表。表结构在上面,大家帮忙看看啊,谢了

作者: sakuramanu   发布时间: 2011-11-08