ifsqlnotfound
A. sql语句怎么写
declare
begin
update 表a
set cl1 = 'aa' ,
cl2 = 'bb'
where name = 'jjyy';
if sql%notfound then
insert into 表a(cl1, cl2,name) select cl1,cl2,name from 表b where name = 'jjyy' ;
end if;
end;
B. oracle 包体创建. 报错误信息
正确的写法如下:
CREATE OR REPLACE PACKAGE BODY pk_xx_test_an
IS
g_deptno NUMBER DEFAULT NUMBER;
PROCEDURE add_employee (
test_1 NUMBER,
test_2 VARCHAR2,
create_by VARCHAR2,
create_date DATE,
version_number NUMBER
)
IS
test_no NUMBER;
BEGIN
DELETE FROM xx_test_an
WHERE test_1 = 4;
IF SQL%NOTFOUND
THEN
raise_application_error (-20012, '?此人');
END IF;
END;
END;
/
最后的END后面要么什么都不写,要么就要一一对应地写存储过程的名称和包的名称。比如你这里要按如下写法方可。
END add_employee; -- 先结束其中的存储过程
END pk_xx_test_an; -- 再结束整个包
C. oracle update语句执行疑问
if sql%notfound then
raise_application_error(-20000,'update error......');
end if;
如果SQL语句有作用的行,sql%notfound返回FALSE,否则返回TRUE并抛出自定义的错误号和错误消息
你也可以在EXCEPTION部分抛出错误:
exception
when no_data_found then
..
..
D. SQL%NOTFOUND是什么是ORACLE的全局变量吗
是游标的属性。
cursor%NOTFOUND,布尔值,游标没有获取到结果时为 True。与%FOUND结果相反。
游标名称为 SQL,表明这是一个隐式游标。在程序块中执行一个语句,就会打开一个游标,并自行管理。
BEGIN
DELETEempWHEREempno='7788';
IFSQL%FOUNDTHEN
dbms_output.put_line('删除成功。');
ELSE
dbms_output.put_line('没有数据被删除。');
ENDIF;
END;
/
E. if(!SQL_ISOK && !SQL_NOTFOUND)表示什么
应该要 自己 赋值的吧。
如果已经赋值(类库或自己)鼠标放上去应该有值会告诉你的。
看了你没选对工具。