oracle存儲過程if條件
A. oracle 存儲過程中 如果用if語句判斷一條查詢語句的結果集是否為空
已經經過測試,可以。
create table test1023(id int); --創建測試表 test1023
declare cnt int;
begin
select count(*) into cnt from test1023;
if cnt=0 then
insert into test1023 values('1');
commit;
end if;
end;
B. oracle 的存儲過程if怎麼嵌套啊
我給你舉個例子:
--配送量(萬箱)
select sum(QUANTITY_SUM) into quantity_sum from DWV_OUT_DIST_BILL where to_char(DIST_DATE,'YYYYMM')=month ;
if quantity_sum is null then
quantity_sum:=0;
end if;
--轉換成萬箱
quantity_sum :=quantity_sum/50/10000;
C. oracle存儲過程中寫IF ELES
if 條件 then
語句
elsif 條件 then
語句
else
語句
end if;
D. oracle procere存儲過程
OR REPLACE PROCEDURE 存儲過程名字( 參數1 IN NUMBER, 參數2 IN NUMBER ) IS/AS變數1 INTEGER :=0;變數2 DATE;BEGIN.END 存儲過程名字2、SELECT INTO STATEMENT
將select查詢的結果存入到變數中,可以同時將多個列(欄位)存儲到多個變數中,必須有一條記錄,否則拋出異常(如果沒有記錄,拋出NO_DATA_FOUND)
例子:
BEGIN SELECT col1,col2 into 變數1,變數2 FROM typestruct where xxx; EXCEPTION WHEN NO_DATA_FOUND THEN ROLLBACK; RAISE; END;3、IF判斷
IF 條件1 THEN Do Someting ELSIF 條件2 THEN Do Someting ELSIF 條件3 THEN Do Someting ELSE Do SometingEND IF;4、while循環
WHILE V_TEST=1 LOOP BEGIN XXXX END; END LOOP; 5、變數賦值
V_TEST := 123; 6、用for in使用cursor(游標)
. IS CURSOR cur IS SELECT * FROM xxx; BEGIN FOR cur_result in cur LOOP BEGIN V_SUM :=cur_result.列名1+cur_result.列名2 END; END LOOP; END; 7、用pl/sql developer debug
連接資料庫後建立一個Test Window
在窗口輸入調用SP的代碼,F9開始Debug,CTRL+N單步調試
注意事項:
1)存儲過程參數不帶取值范圍,in表示傳入,out表示輸出;
2)變數可帶取值范圍,後面接分號;
3)在判斷語句前最好先用count(*)函數判斷是否存在該條操作記錄
4)用select.into.給變數賦值
5)在代碼中拋出異常用RAISE;通常的用法:
EXCEPTION WHEN OTHERS THEN ROLLBACK; RAISE;/*異常分很多類,如NO_DATA_FOUND。OTHERS處本應該寫異常名稱,如果不想把異常分得那麼細,可以籠統一點用OTHERS來捕獲,即所有異常均用OTHERS來捕獲。WHEN OTHERS THEN 表示是其它異常。RAISE表示拋出異常,讓User可以看到。*/
6)AS/IS的區別
在試圖(VIEW)中只能用AS不能用IS
在游標(CURSOR)中只能用IS不能用AS
7)輸出變數賦值有兩種,一種是直接:=,還有一種就是SELECT INTO
8)顯示調試信息
a.存儲過程中在必要的位置添加
DBMS_OUTPUT.put_line(『HI『);
b.打開DBMS_OUTPUT
show serveroutput;set serveroutput on;
9)刪除PROCEDURE
DROP PROCEDURE procere_name;
oracle procere存儲過程
E. oracle存儲過程中if條件後的sql沒有執行
你把你這兩個 dbms輸出的語句注釋掉試下,你這兩個語句後面都有封號,不是代表if語句已經結束了嗎
F. oracle 存儲過程里的if else
ifS_date=4then
p_temp();
elsifS_date!=4then
p_temp2();
endif;
G. 求教一下oracle存儲過程中if的嵌套使用問題
一、
if()then
if()then
end if;
end if;
二、
if()then
elsif()then
end if;
H. oracle 存儲過程 if語句
&&用and表示,如:
if 1=1 and 2=2 then
...
end;
||用or表示。
!用not表示。
I. Oracle 的存儲過程怎麼寫。
oracle 存儲過程的基本語法
1.基本結構
CREATE OR REPLACE PROCEDURE 存儲過程名字
(
參數1 IN NUMBER,
參數2 IN NUMBER
) IS
變數1 INTEGER :=0;
變數2 DATE;
BEGIN
END 存儲過程名字
2.SELECT INTO STATEMENT
將select查詢的結果存入到變數中,可以同時將多個列存儲多個變數中,必須有一條
記錄,否則拋出異常(如果沒有記錄拋出NO_DATA_FOUND)
例子:
BEGIN
SELECT col1,col2 into 變數1,變數2 FROM typestruct where xxx;
EXCEPTION
WHEN NO_DATA_FOUND THEN
xxxx;
END;
...
3.IF 判斷
IF V_TEST=1 THEN
BEGIN
do something
END;
END IF;
4.while 循環
WHILE V_TEST=1 LOOP
BEGIN
XXXX
END;
END LOOP;
5.變數賦值
V_TEST := 123;
6.用for in 使用cursor
...
IS
CURSOR cur IS SELECT * FROM xxx;
BEGIN
FOR cur_result in cur LOOP
BEGIN
V_SUM :=cur_result.列名1+cur_result.列名2
END;
END LOOP;
END;
7.帶參數的cursor
CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID;
OPEN C_USER(變數值);
LOOP
FETCH C_USER INTO V_NAME;
EXIT FETCH C_USER%NOTFOUND;
do something
END LOOP;
CLOSE C_USER;
8.用pl/sql developer debug
連接資料庫後建立一個Test WINDOW
在窗口輸入調用SP的代碼,F9開始debug,CTRL+N單步調試