oracle存儲過程筆試題
Ⅰ 請問幾個oracle存儲過程語法的問題
1、包中用is和as是同等的,因為在sql中只能用AS,而在PL/SQL中可以用is,因兼容問題,所以PL/SQL中也可以使用AS;
2、放在begin外面,值得注意的是PL/SQL是塊狀結構,所以變數都應該的申明部分定義,也就是begin外面;
3、在函數、過程、包的申明部分定義變數時,可以不用Declare,但使用匿名程序時,一定要使用Declare定義變數;
4、純SQL語句是不用begin/end的。只有PL/SQL語句才使用。
Ⅱ 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存儲過程
Ⅲ oracle資料庫怎麼創建存儲過程
創建Oracle資料庫中的存儲過程是資料庫編程的重要環節。在這個例子中,我們將創建一個簡單的存儲過程,該過程接受一個整數參數,並執行特定的操作。下面是如何使用Java語言創建這樣一個存儲過程的步驟。
首先,確保你已經配置好了Oracle資料庫的驅動程序,並且能夠成功連接到資料庫。這里使用了`DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver())`來注冊Oracle JDBC驅動程序。
接下來,通過`DriverManager.getConnection()`方法獲取到資料庫連接。這里使用了`jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL`作為連接字元串,具體的資料庫連接信息需要根據實際情況進行修改。
然後,我們創建一個`CallableStatement`對象,它用於調用存儲過程。在這個例子中,存儲過程名為`pro1`,並且接受一個參數。`conn.call("{call pro1(?)}")`這行代碼創建了一個`CallableStatement`對象,並指定了調用的存儲過程名稱。
接下來,我們給存儲過程的參數設置值。這里使用`c.setInt(1, 188)`將第一個參數設置為188。注意,參數的索引從1開始。
最後,我們通過調用`c.execute()`執行存儲過程。這行代碼會觸發存儲過程的執行,並將結果返回給Java程序。在執行完畢後,記得關閉資料庫連接以釋放資源。
整個過程展示了如何使用Java語言連接到Oracle資料庫,並調用存儲過程。通過這種方式,可以實現對資料庫的高級操作,提升程序的性能和功能性。
需要注意的是,存儲過程的具體實現邏輯需要在資料庫端進行編寫。這里僅僅展示了如何通過Java代碼來調用存儲過程。
通過上述步驟,你可以成功創建並調用一個簡單的Oracle存儲過程。這對於資料庫編程來說是一個重要的技能,可以幫助你更好地管理和操作資料庫中的數據。
Ⅳ oracle的存儲過程的調用和寫法
在Oracle PL/SQL中,存儲過程的調用與編寫方法如下:
首先,在"測試"窗口中輸入以下代碼進行測試:
dbms.output.put_line(param)類似於JSP中的out.println(),用於在過程中查看錯誤信息,可以在過程中添加。
示例代碼如下:
declare param varchar2(10); begin param :='week';--這是你的輸入參數 proc_rpt_result(param); dbms_output.put_line(param);--這是過程處理列印結果 end;
這段代碼展示了如何定義一個變數,設定輸入參數,調用存儲過程,並列印結果。
接下來,我們來看看游標的使用。游標是一種用於存儲和處理查詢結果的特殊變數。例如:
select xx from xxx 有多個返回值,可以將這些返回值存儲到游標cursor中,然後通過open打開游標,逐個處理這些值。
你可以把游標看作是一個數組,select操作將查詢結果存入游標,open操作則取出這些值進行處理。
下面是一個使用游標的示例代碼:
declare cursor c1 is select * from emp; begin open c1; loop fetch c1 into :col1, :col2; exit when c1%notfound; dbms_output.put_line(col1 || ', ' || col2); end loop; close c1; end;
這段代碼定義了一個游標,從emp表中獲取數據,並逐行列印這些數據。
以上就是關於Oracle存儲過程的調用和編寫方法,以及如何使用游標處理查詢結果的簡單介紹。
Ⅳ oracle存儲過程 游標和動態賦值問題
創建:
create or replace procere t_ts(ref_cur out sys_refcursor) AS
BEGIN
open ref_cur for SELECT leixing FROM diaobodan;
end t_ts;
調用:
declare
s_cur SYS_REFCURSOR;
v_leixing varchar2(100);
begin
t_ts(s_cur);
loop
fetch s_cur into vv_name;
exit when s_cur%notfound;
dbms_output.put_line(v_leixing);
end loop;
end;
是這個意思嗎?