当前位置:首页 » 存储配置 » 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的文档吧

热点内容
仿美团外卖小程序源码 发布:2025-01-07 19:03:51 浏览:346
数据库攻防 发布:2025-01-07 19:03:04 浏览:26
安卓打包生成apk文件在哪里 发布:2025-01-07 18:54:39 浏览:898
c语言的按位与 发布:2025-01-07 18:54:38 浏览:12
c语言中指数 发布:2025-01-07 18:45:54 浏览:865
php拿站 发布:2025-01-07 18:45:49 浏览:889
数学不好可以学编程吗 发布:2025-01-07 18:44:19 浏览:242
Java基础案例教程 发布:2025-01-07 18:39:21 浏览:107
php字符串判断相等 发布:2025-01-07 18:39:14 浏览:290
数据库添加表格数据 发布:2025-01-07 18:38:25 浏览:997