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)表示什麼
應該要 自己 賦值的吧。
如果已經賦值(類庫或自己)滑鼠放上去應該有值會告訴你的。
看了你沒選對工具。