本来想把图片贴出来的,可是因为贴图有问题,所以只能描述了:在PL/SQL Developer或直接登录Oracle客户端/服务器,修改数据时出现这样的问题:
ora-20595: no data found in single select.
ora-06512: at "TEST.TR_U_COMPONENT", line 60
ora-04088: error during excution of trigger 'TEST.TR_U_COMPONENT'下面是出现问题的语句:
WHEN NO_DATA_FOUND THEN
raise_application_error (-20595, 'No data found in a single select.');
但是在另外一个客户端软件(INtools)软件中,可以直接修改的。
不知道为什么,请各位大虾帮忙解释一下,谢谢。
ora-20595: no data found in single select.
ora-06512: at "TEST.TR_U_COMPONENT", line 60
ora-04088: error during excution of trigger 'TEST.TR_U_COMPONENT'下面是出现问题的语句:
WHEN NO_DATA_FOUND THEN
raise_application_error (-20595, 'No data found in a single select.');
但是在另外一个客户端软件(INtools)软件中,可以直接修改的。
不知道为什么,请各位大虾帮忙解释一下,谢谢。
解决方案 »
- 一个关于Oracle存储过程的问题
- 安装oracle9i时遇到的问题-----hostdef扩展名不存在?
- 如何不写TSQL语句,用可视化界面操作,去更改Oracle的配置参数,比如字符集等?
- Oracle 用户和实例问题
- 两台ORACLE数据库怎么实现数据同步,用SHELL
- 急问!!ORACLE的CPU占用率很低,内存空闲也很多!但SQL语句的执行效率极低,怎么回事?
- [200分]向BLOB字段中存一个小的文档可以,但当超过2M就报如下错误:(急等)
- pro*C/C++ 怎么预编译C++程序?
- 菜鸟入不了"门",请赐教!
- 请问,在这样的语句中,我怎么求各个字段的和???--在线等候,急!!!
- 问一个傻一点的问题……
- 请教下有关重建datafile的问题
应该是前一个select语句没有返回需要的结果吧
Before update on COMPONENT
For each row
Declare nresult integer;
cresult char(1);
prf_dim char(1);
sFlg char(1);
iCnt int;
nDwgId int;
n_out number;
Begin
P_pause_triggers(n_Out);
If n_Out = 1 Then
Return;
End If;-- ### According to Doron G. for Telecom module, ###
-- ### assisted by Boris P., 12-Mar-2001 ###
IF UPDATING THEN
If :old.TC_LINE_NUMBER_ID <> :new.TC_LINE_NUMBER_ID Then
Update panel set tc_line_number_id = :new.TC_LINE_NUMBER_ID
where panel_id = (select panel_id from panel_component
where cmpnt_id = :new.CMPNT_ID);
End If;
END IF;
-- ################################################## If (Nvl(length(rtrim(ltrim(:new.re1))),0) <> 0)
Or (Nvl(length(rtrim(ltrim(:new.re2))),0) <> 0)
Or (Nvl(length(rtrim(ltrim(:new.re3))),0) <> 0)
Or (Nvl(length(rtrim(ltrim(:new.re4))),0) <> 0)
Or (Nvl(length(rtrim(ltrim(:new.re5))),0) <> 0)
Or (Nvl(length(rtrim(ltrim(:new.cmpnt_note))),0) <> 0) Then
:new.cmpnt_find_rem := 1;
End if;
If (Nvl(length(rtrim(ltrim(:new.re1))),0) = 0)
and (Nvl(length(rtrim(ltrim(:new.re2))),0) = 0)
and (Nvl(length(rtrim(ltrim(:new.re3))),0) = 0)
and (Nvl(length(rtrim(ltrim(:new.re4))),0) = 0)
and (Nvl(length(rtrim(ltrim(:new.re5))),0) = 0)
and (Nvl(length(rtrim(ltrim(:new.cmpnt_note))),0) = 0) Then
:new.cmpnt_find_rem := NULL;
End if;
If :old.master_cmpnt_id > 0 then -- according to Ramzi Haddad
return;
End If;-- ### BPoliako according to ITokar (adding CASE_ID), 04-May-2004 ###
IF :NEW.plant_id <> 0 THEN
FOR rec IN (Select dwg_id from spec_sheet_data
where cmpnt_id = :OLD.cmpnt_id and cmpnt_id > 0)
LOOP
IF rec.dwg_id > 0 THEN
iCnt := NULL;
SELECT count(*) INTO iCnt
FROM package_drawing WHERE dwg_id = rec.dwg_id;
IF iCnt > 0 THEN
UPDATE package_drawing SET chg_flag = 'Y'
WHERE dwg_id = rec.dwg_id;
END IF;
IF :NEW.instr_pd_flg = 4 OR :NEW.instr_pd_flg=1 THEN
UPDATE package_drawing SET release_flag = 'N'
WHERE dwg_id = rec.dwg_id;
END IF;
END IF;
END LOOP;
END IF;
-- #################################################################### if :new.cmpnt_name <> :old.cmpnt_name then
p_rename_tag (:new.cmpnt_id,:old.cmpnt_name,:new.cmpnt_name,nresult);
end if;
Select prf_dimension into prf_dim
from component_function_type
where cmpnt_func_type_id = :old.cmpnt_func_type_id;
IF prf_dim = 'Y' THEN
select dim_remedy_type_flg into cresult
from project where proj_id = :old.proj_id; If :old.cmpnt_mfr_id <> :new.cmpnt_mfr_id Or :old.cmpnt_mod_id <> :new.cmpnt_mod_id Then
UPDATE component_dimensional SET suspect_flg = 'Y', ready_flg = 'N',
ENG_PROJ_ID = :old.ENG_PROJ_ID, ENG_REF_ID = :old.ENG_REF_ID
WHERE cmpnt_id = :old.cmpnt_id; INSERT INTO dimensional_suspect
(dim_suspect_id, dim_suspect_desc, susp_number,
cmpnt_id, proj_id, plant_id,site_id, area_id,
unit_id, user_name, chg_date, chg_num,
chg_status,ENG_PROJ_ID,ENG_REF_ID)
VALUES (Seq_Next_Id.NEXTVAL,
'Change in Manufacturer or Model',0,
:old.cmpnt_id, :old.proj_id, :old.plant_id,
:old.site_id, :old.area_id, :old.unit_id,
:old.user_name, SYSDATE,:old.chg_num,
:old.chg_status,:old.ENG_PROJ_ID,:old.ENG_REF_ID);
UPDATE component_dimensional SET suspect_flg = 'Y',
ENG_PROJ_ID = :old.ENG_PROJ_ID, ENG_REF_ID = :old.ENG_REF_ID
WHERE cmpnt_id = :old.cmpnt_id;
End If; If :old.cmpnt_func_type_id <> :new.cmpnt_func_type_id Then
sFlg := '1';
End If; if sFlg = '1' Then
If cresult = '1' Then
UPDATE component_dimensional SET
dim_grp_udfn01 = to_number(''),
dim_grp_udfn02 = to_number(''),
dim_grp_udfn03 = to_number(''),
dim_grp_udfn04 = to_number(''),
dim_grp_udfn05 = to_number(''),
dim_grp_udfn06 = to_number(''),
dim_grp_udfn07 = to_number(''),
dim_grp_udfn08 = to_number(''),
dim_grp_udfn09 = to_number(''),
dim_grp_udfn10 = to_number(''),
dim_grp_udfn11 = to_number(''),
dim_grp_udfn12 = to_number(''),
dim_grp_udfn13 = to_number(''),
dim_grp_udfn14 = to_number(''),
dim_grp_udfn15 = to_number(''),
dim_grp_udfn16 = to_number(''),
dim_grp_udfn17 = to_number(''),
dim_grp_udfn18 = to_number(''),
dim_grp_udfn19 = to_number(''),
dim_grp_udfn20 = to_number(''),
dim_grp_udfn21 = to_number(''),
dim_grp_udfn22 = to_number(''),
dim_grp_udfn23 = to_number(''),
dim_grp_udfn24 = to_number(''),
dim_grp_udfn25 = to_number(''),
dim_grp_udfn26 = to_number(''),
dim_grp_udfn27 = to_number(''),
dim_grp_udfn28 = to_number(''),
dim_grp_udfn29 = to_number(''),
dim_grp_udfn30 = to_number(''),
ENG_PROJ_ID = :old.ENG_PROJ_ID,
ENG_REF_ID = :old.ENG_REF_ID
where cmpnt_id = :old.cmpnt_id;
End If; UPDATE component_dimensional
SET suspect_flg = 'Y', ready_flg = 'N',
ENG_PROJ_ID = :old.ENG_PROJ_ID,
ENG_REF_ID = :old.ENG_REF_ID
WHERE cmpnt_id = :old.cmpnt_id;
INSERT INTO dimensional_suspect
(dim_suspect_id, dim_suspect_desc, susp_number,
cmpnt_id, proj_id, plant_id, site_id, area_id,
unit_id, user_name, chg_date, chg_num,
chg_status,ENG_PROJ_ID,ENG_REF_ID)
VALUES (Seq_Next_Id.NEXTVAL,
'Change in Instrument Type', 0,
:old.cmpnt_id, :old.proj_id, :old.plant_id,
:old.site_id, :old.area_id, :old.unit_id,
:old.user_name,SYSDATE, :old.chg_num,
:old.chg_status,:old.ENG_PROJ_ID,:old.ENG_REF_ID);
End If;
End if; /* IF prf_dim = 'Y' */
EXCEPTION
WHEN NO_DATA_FOUND THEN
raise_application_error (-20595, 'No data found in a single select.'); WHEN TOO_MANY_ROWS THEN
raise_application_error (-20594, 'Too many rows in a single select.');
WHEN OTHERS THEN
raise_application_error (-20593, 'Other errors during execution of the trigger.');
End ;
from component_function_type
where cmpnt_func_type_id = :old.cmpnt_func_type_id;
sorry,什么相应数据?哦,说明一下,语句是自动生成的,不是手写的,我是全盘拷贝过来的
select into 之前最好先select count(*) 一下,确认有且只有一条记录再select into