illegal zero-length identifier

最近项目用到了存储过程,试着写了一个,代码如下:

CREATE OR REPLACE 
PROCEDURE "procedure_qcjhwcqkimg_1" AS
temp_date VARCHAR2(20);
temp_count number(7);

BEGIN

  select to_char(SYSDATE,'mm') into temp_date from dual;
  DBMS_OUTPUT.PUT_LINE(temp_date);
  select count(*) into  temp_count from  Temp_Index_QcjhwcqkImg where Temp_Index_QcjhwcqkImg.MONTH = temp_date;
  if temp_count>0 then
  DBMS_OUTPUT.PUT_LINE('需要更新');
  else
  DBMS_OUTPUT.PUT_LINE('需要插入');
  end if;
END;


可以编译成功,但是就是不能执行成功,执行报illegal zero-length identifier错误,但是没有看出什么错误。我使用的是NAVICAT ORACLE工具。多次reload存储过程,突然执行成功了。搞不懂!不过对illegal zero-length identifier错误也进行了研究。

错误原文 – illegal zero-length identifier
中文提示: ORA-01741:非法的零长度标识
点阅数 259
错误原因
要使用两个双引号表示数据,是至少需要要一个字符的长度。
处理办法
修改双引号数据的长度不可以为0。
范例
以下的SQL 叙述会发生ORA-01741 的错误,因为双引号中包含一个长度是0 的无效字符。
SELECT ORDER_DATE
FROM TOREDER
WHERE ORDER_NO = “”
 
修改这样错误的方法,当中塞入一个空白,但是这样可以还是无法捞取道所要数据。
SELECT ORDER_DATE
FROM TOREDER
WHERE ORDER_NO = ” “
相关编码
ORA-00972 : ”开发人员所参考到的数据表,view 及使用者名称长度超过30 个字符。 ”
ORA-00931 : ”企图要使用的字符串无法判断。”
ORA-01740 : ”有发现起始的单引号但是未发现结束的单引号包装,在叙述中要使用到空白或是特殊字符就要使用单引号包装起来。“
 
或者把双引号改成单引号



对于where后面的条件,用变量代替,如果一个条件需要拼接,则使用oracle自带的拼接字符串的函数弄。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值