當前位置:首頁 » 存儲配置 » jsporacle存儲過程

jsporacle存儲過程

發布時間: 2022-06-16 06:47:58

❶ 使用Oracle的rownum或者存儲過程分頁的詳細例子(jsp)~新手

rownum我舉個例子:按emp.up_time降序排序再查詢輸出的20到30行
select * from (select * ,rownum rown from (select * from emp order by up_time desc) where rownum<30) where rown>20;
其中30跟20可以用變數來替換。

❷ oracle中的存儲過程怎麼寫

Oracle存儲過程寫法實例

總結項目中寫的存儲過程例子:
Oracle存儲過程基本語法 存儲過程
1 CREATE OR REPLACE PROCEDURE 存儲過程名
2 IS/AS
3 BEGIN
4 NULL;
5 EXCEIPTION;
6 END;

1、創建存儲過程,後面可用is或者as:
create or replace procere PRO_COMPLAIN_TEMPLATE as

2、定義變數,此處用到了%TYPE和%ROWTYPE,參考 /database/201211/168564.html ,另外定義了一個游標,TEM_INSTANCE TEMPLATE_CUR%ROWTYPE這個類型定義必須要在游標定義之後:
NEED_DO_FOR_ZL INTEGER;
CURRENT_MAX_ID MEMO_TEMPLET.TEMPLET_ID%TYPE;
CURSOR TEMPLATE_CUR IS SELECT TEMPLET_NAME, TEMPLET_CONTENT FROM SYS_COMPLAINT_TEMPLET;
TEM_INSTANCE TEMPLATE_CUR%ROWTYPE;
3、begin開始塊:
begin

4、該插入語句使用了DBLINK,還有使用DBMS_OUTPUT.put_line('列印信息')進行信息輸出:
insert into MEMO_TEMPLET (TEMPLET_ID, TEMPLET_CONTENT, TEMPLET_TYPE, TEMPLET_MEMO) (SELECT * FROM MEMO_TEMPLET@COMPANY);

SELECT COUNT(*) INTO NEED_DO_FOR_ZL FROM SYS_COMPLAINT_TEMPLET;
IF(NEED_DO_FOR_ZL > 0) THEN
DBMS_OUTPUT.put_line('列印信息');
SELECT MAX(TEMPLET_ID)+1 INTO CURRENT_MAX_ID FROM MEMO_TEMPLET;
DBMS_OUTPUT.put_line('MEMO_TEMPLET最大ID' || CURRENT_MAX_ID);
FOR TEM_INSTANCE IN TEMPLATE_CUR LOOP
INSERT INTO MEMO_TEMPLET (TEMPLET_ID, TEMPLET_CONTENT,
TEMPLET_TYPE, TEMPLET_MEMO) VALUES (CURRENT_MAX_ID,
TEM_INSTANCE.TEMPLET_CONTENT, '7', NULL);
CURRENT_MAX_ID := CURRENT_MAX_ID + 1;
DBMS_OUTPUT.put_line(TEM_INSTANCE.TEMPLET_CONTENT);
END LOOP;
END IF;
COMMIT;
www.2cto.com
4、exception塊,使用WHEN OTHERS THEN,其中用raise可顯示錯誤信息:
exception
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('sqlcode : ' ||sqlcode);
raise;
ROLLBACK;
IF TEMPLATE_CUR%ISOPEN THEN
CLOSE TEMPLATE_CUR;
END IF;
DBMS_OUTPUT.put_line('列印信息');
end;

註:關於游標的使用,如果像本例中使用for循環去遍歷游標的話則不需要顯式的去用open/close
cursor打開和關閉游標,此處會自己處理,如果使用fetch
into的話就需要顯式開關游標,另外任意執行一個update操作,用隱式游標sql的屬性%found,%notfound,%rowcount,%isopen觀察update語句的執行情況,也可以使用來判斷游標狀態,如IF
TEMPLATE_CUR%ISOPEN THEN。

❸ 求教java嵌入JSP並調用ORACLE存儲過程的例子

使用
java.sql.CallableStatement
去調用,不算難了。。。。。。。

❹ oracle的存儲過程的調用和寫法

存儲過程的執行方法如下
/*****************************************************************
oracle pl/sql中新建一個"測試"窗口,鍵入以下值測試oracle存儲過程。
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;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
這是我前段時間自己查資料總結的,都是初學者 希望對你有用

cursor是游標類型,前面某個查詢的值有多個返回 如
select xx from xxx 有多個返回值xx存入游標cursor,下面的open打開游標,對每一個游標的值按順序進行操作,你可以把游標看成是一個數組,select存入,open取出,你這個包我看不懂。

❺ 怎麼在JSP中顯示oracle存儲過程中的dbms_output.put_line值

你可以在存儲工程中設置一個輸出參數,
這樣你就可以獲取存儲過程中的想要的數據了

❻ jsp如何向oracle存儲過程傳遞日期類型的參數

java.util.Date date;
Timestamp timestamp = resultSet.getTimestamp(i);
if (timestamp != null)
date = new java.util.Date(timestamp.getTime()));

解釋一下:首先從結果集中拿到timestamp,然後作為參數傳入date中,就變成java.util.Date類型
然後轉成你想要的格式就ok了,一般用
DateFormat df=new SimpleDateFormat(format);
String result=df.format(date );

❼ jsp調用oracle資料庫存儲過程(追50分)

沒見過你這么調存儲過程的!
給你個參考,我自己寫的!

1.建一個程序包。如下:
create or replace package testpackage
is
type Test_Cursor is ref cursor;

Procere testc(
p_Cursor out testpackage.Test_Cursor
);
end testpackage;

2.建立存儲過程,存儲過程為:
create or replace package body testpackage
is
Procere testc(
p_Cursor out testpackage.Test_Cursor
)
As

Begin
open p_Cursor for select USER_NAME from bj.test;

end;

end testpackage;

JAVA代碼為:
public static void main(String[] args) {
Connection conn = null;
String url = "jdbc:oracle:thin:@172.16.0.139:1521:ORATEST";
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
conn = DriverManager.getConnection(url, "bj", "bj");
/*調用開始*/
CallableStatement cstmt = conn.prepareCall("{call bj.testpackage.TESTC(?)}");
cstmt.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
boolean bool = cstmt.execute();
/*調用結束*/
System.out.println(bool);
ResultSet rs = (ResultSet)cstmt.getObject(1);
while(rs.next()){
System.out.print(rs.getString("USER_ID") + " ");
System.out.print(rs.getString("USER_NAME") + " ");
System.out.println(rs.getString("USER_PWD"));
}
rs.close();
cstmt.close();
conn.close();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}

補充一下,要返回ResultSet需要用到oracle的package這個東西

❽ Oracle資料庫的存儲過程怎麼寫

1 CREATE OR REPLACE PROCEDURE 存儲過程名
2 IS
3 BEGIN
4 NULL;
5 END;

行1:
CREATE OR REPLACE PROCEDURE 是一個SQL語句通知Oracle資料庫去創建一個叫做skeleton存儲過程, 如果存在就覆蓋它;
行2:
IS關鍵詞表明後面將跟隨一個PL/SQL體。
行3:
BEGIN關鍵詞表明PL/SQL體的開始。
行4:
NULL PL/SQL語句表明什麼事都不做,這句不能刪去,因為PL/SQL體中至少需要有一句;
行5:
END關鍵詞表明PL/SQL體的結束.
存儲過程創建語法:
create or replace procere 存儲過程名(param1 in type,param2 out type)
as
變數1 類型(值范圍); --vs_msgVARCHAR2(4000);
變數2 類型(值范圍);
Begin
Select count(*) into 變數1 from 表A where列名=param1;

If (判斷條件) then
Select 列名 into 變數2 from 表A where列名=param1;
Dbms_output。Put_line(『列印信息』);
Elsif (判斷條件) then
Dbms_output。Put_line(『列印信息』);
Else
Raise 異常名(NO_DATA_FOUND);
End if;
Exception
When others then
Rollback;
End;

❾ 請問能否直接用jsp語句創建oracle的存儲過程,具體用什麼方法來實現

不可能用直接jsp語句創建oracle存儲過程。在vs2005中可以直接寫sql server 2005的存儲過程

❿ JSP 中如何調用ORACLE的存儲過程,並判斷是否調用成功,及獲取過程的返回值

先用prepareStatement,參數是你存儲過程名(?,?,?,?,?,?)
讓後setString或其他數據類型方法
最後調用executeUpdate

要獲得返回值,你就不能用標準的java sql類,必須用oracle擴展後的sql類,具體看oracle jdbc driver的文檔吧

熱點內容
macbookair13寸配置如何 發布:2025-01-06 04:46:51 瀏覽:250
c語言則么下載 發布:2025-01-06 04:46:39 瀏覽:351
C語言海燕 發布:2025-01-06 04:42:22 瀏覽:940
誇克緩存視頻都是幾k怎麼辦 發布:2025-01-06 04:32:29 瀏覽:464
are編程 發布:2025-01-06 04:30:45 瀏覽:536
伺服器我的世界怎麼弄積分 發布:2025-01-06 04:24:32 瀏覽:738
小白源碼資源站 發布:2025-01-06 04:23:07 瀏覽:651
劍靈刷本腳本 發布:2025-01-06 04:21:33 瀏覽:687
2014編程語言 發布:2025-01-06 04:20:51 瀏覽:941
linuxcomm 發布:2025-01-06 04:15:02 瀏覽:291