应届生求职全攻略

应届生求职招聘论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

只需一步,快速开始

将应届生论坛分享给朋友:
求职攻略 关注应届生: 今日十大 Email订阅:全职订阅  实习订阅
  每日主题推荐: 实习,找工作,写毕业论文心得(2012.05.25) 更多推荐
搜索讨论区: 按拼音查找
查看: 23119|回复: 417

[计算机] sql语句复习

[复制链接]

0

主题

0

好友

129

积分

项目经理

Rank: 3Rank: 3

在线时间
7 小时
应届生币
203 枚
最后登录
2009-4-14
阅读权限
10
精华
1
帖子
26
发表于 2008-10-1 00:20:45 |显示全部楼层
本帖最后由 locust_j 于 2009-8-4 17:10 编辑

经  典             5                  0           句

 

CREATE PROCEDURE DB2ADMIN."MyProcedure"()

    SPECIFIC DB2ADMIN."Step"

    MODIFIES SQL DATA

    NOT DETERMINISTIC

    LANGUAGE JAVA

    EXTERNAL NAME 'ProcedureJava!methodProcedure'

    FENCED

    INHERIT SPECIAL REGISTERS

    PARAMETER STYLE DB2GENERAL

    PROGRAM TYPE SUB

    NO DBINFO

;

 

 

 

 

1 通过jdbc调用存储过程

    java.sql.Connection类中的public CallableStatement prepareCall(String sql)方法调用存储过程。Sqlan SQL statement that may contain one or more '?' parameter placeholders. Typically this statement is a JDBC function call escape string.,即调用存储过程语句

Example
Stored procedures:
Create or replace procedure addMember(name in varchar2(50),sex in varchar2(50)) as
begin
 insert into family f (f.name,f.sex) values (name,sex);
end addMember;
Java source code:
…………………………………get Connection
String procedure = "{call addMember(?,?)}";
CallableStatement cstmt = conn.prepareCall(procedure);
cstmt.setString(1,”马锐”)
cstmt.serString(2,””);
cstmt.excute();
………..close connection
 
若是需要返回值,我们可以通过function实现。可用下面方法
Example
Stored procedures:
Create or replace function viewMember return types.cursortype as
   family_cursor types.cursortype;
begin
 open family_cursor for select f.name,f.sex from family f
return family_cursor 
end addMember;
Java source code:
…………………………………get Connection
String procedure ="begin :1:=viewMember;end;";
CallableStatement cstmt = conn.prepareCall(procedure);
cstmt.registerOutParameter(1,OracleTypes.CURSOR);
cstmt.execute();
ResultSet rset = (ResultSet)cstmt.getObject(1);
while(rset.next())
System.out.println(rset.getString(1);
cstmt.close();
)
………..close connection
 

2 通过hibernate调用存储过程

hibernate操作数据库,可以通过获取的session值,调用connection()方法获取connection,从而调用存储过程。

 

 

 java调用存储过程


1.什么是存储过程?

存储过程是指保存在数据库并在数据库端执行的程序。存储过程是为嵌入式SQL所设计

 

2.     如何调用存储过程?

 

try{

     int age = 39; 

    String poetName = "dylan thomas"; 

    CallableStatement proc = connection.prepareCall("{ call set_death_age(?, ?) }"); 

    proc.setString(1, poetName); 

    proc.setInt(2, age); 

    cs.execute();

}catch (SQLException e){ // ....}

   

    传给prepareCall方法的字串是存储过程调用的书写规范。它指定了存储过程的名称,?代表了你需要指定的参数。

 

3.     存储过程可以有返回值

所以CallableStatement类有类似getResultSet这样的方法来获取返回值。当存储过程返回一个值时,你必须使用registerOutParameter方法告诉JDBC驱动器该值的SQL类型是什么。你也必须调整存储过程调用来指示该过程返回一个值。

 

connection.setAutoCommit(false);

CallableStatement proc = connection.prepareCall("{ ? = call snuffed_it_when(?) }");

proc.registerOutParameter(1, Types.INTEGER);

proc.setString(2, poetName);

cs.execute();

int age = proc.getInt(2);

 

4.     复杂的返回值

static void sendEarlyDeaths(PrintWriter out){ 

    Connection con = null;

    CallableStatement toesUp = null;

    try {

        con = ConnectionPool.getConnection(); 

         // PostgreSQL needs a transaction to do this... con.

        setAutoCommit(false); // Setup the call. 

        CallableStatement toesUp = connection.prepareCall("{ ? = call list_early_deaths () }"); 

         toesUp.registerOutParameter(1, Types.OTHER); 

         toesUp.execute(); 

         ResultSet rs = (ResultSet) toesUp.getObject(1)

         while (rs.next()) {

                String name = rs.getString(1);

                int age = rs.getInt(2); 

                out.println(name + " was " + age + " years old."); 

          } 

          rs.close(); 

       } 

     catch (SQLException e) { // We should protect these calls. toesUp.close(); con.close();

    }

}

 

     因为JDBC并不直接支持从存储过程中返回游标,我们使用Types.OTHER来指示存储过程的返回类型,然后调用getObject()方法并对返回值进行强制类型转换。

 

 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册



1

查看全部评分

0

主题

0

好友

40

积分

职员

Rank: 2

在线时间
6 小时
应届生币
8 枚
最后登录
2008-10-1
阅读权限
7
精华
0
帖子
164
发表于 2008-10-1 17:27:46 |显示全部楼层
应届生求职面试全攻略-推荐
霹雳鸭子ds f
回复

使用道具 举报

0

主题

0

好友

7

积分

求职中

Rank: 1

在线时间
6 小时
应届生币
-1 枚
最后登录
2008-10-7
阅读权限
5
精华
0
帖子
31
发表于 2008-10-2 23:08:46 |显示全部楼层
应届生求职面试全攻略-推荐
ddddddddddddddddddddd
回复

使用道具 举报

0

主题

0

好友

7

积分

求职中

Rank: 1

在线时间
6 小时
应届生币
-1 枚
最后登录
2008-10-7
阅读权限
5
精华
0
帖子
31
发表于 2008-10-2 23:12:43 |显示全部楼层
应届生求职简历全攻略-推荐
ddddddddddddddddddddd
回复

使用道具 举报

0

主题

0

好友

26

积分

职员

Rank: 2

在线时间
9 小时
应届生币
32 枚
最后登录
2009-5-23
阅读权限
7
精华
0
帖子
21
发表于 2008-10-3 16:15:24 |显示全部楼层

好东西

应届生银行求职全攻略-应聘银行推荐必读
不错,不错
回复

使用道具 举报

0

主题

0

好友

11

积分

求职中

Rank: 1

在线时间
5 小时
应届生币
1 枚
最后登录
2009-4-19
阅读权限
5
精华
0
帖子
47
发表于 2008-10-3 16:16:17 |显示全部楼层
好东西,谢谢了
回复

使用道具 举报

0

主题

0

好友

28

积分

职员

Rank: 2

在线时间
24 小时
应届生币
21 枚
最后登录
2009-1-2
阅读权限
7
精华
0
帖子
44
发表于 2008-10-3 17:06:39 |显示全部楼层

回复 1# ningker 的帖子

回帖是一种美德,继续努力加油,fighting
回复

使用道具 举报

0

主题

0

好友

24

积分

职员

Rank: 2

在线时间
8 小时
应届生币
-1 枚
最后登录
2008-11-6
阅读权限
7
精华
0
帖子
113
发表于 2008-10-4 09:04:29 |显示全部楼层
谢谢分享~~~~~~~~~~~
回复

使用道具 举报

0

主题

0

好友

17

积分

求职中

Rank: 1

在线时间
6 小时
应届生币
19 枚
最后登录
2008-11-2
阅读权限
5
精华
0
帖子
18
发表于 2008-10-4 18:12:41 |显示全部楼层
[smile] [smile] [smile] [smile]
回复

使用道具 举报

0

主题

0

好友

8

积分

求职中

Rank: 1

在线时间
4 小时
应届生币
0 枚
最后登录
2012-5-7
阅读权限
5
精华
0
帖子
35
发表于 2008-10-4 19:29:53 |显示全部楼层

呵和

谢谢楼主了哈~~~
回复

使用道具 举报

0

主题

0

好友

10

积分

求职中

Rank: 1

在线时间
4 小时
应届生币
1 枚
最后登录
2010-9-25
阅读权限
5
精华
0
帖子
39
发表于 2008-10-4 21:39:38 |显示全部楼层
谢谢楼主了
回复

使用道具 举报

0

主题

0

好友

4

积分

求职中

Rank: 1

在线时间
9 小时
应届生币
-6 枚
最后登录
2008-12-8
阅读权限
5
精华
0
帖子
28
发表于 2008-10-5 11:21:50 |显示全部楼层
thx~~~~~~~~~~
回复

使用道具 举报

0

主题

0

好友

10

积分

求职中

Rank: 1

在线时间
7 小时
应届生币
1 枚
最后登录
2008-11-18
阅读权限
5
精华
0
帖子
39
发表于 2008-10-5 11:30:55 |显示全部楼层
ddddddddddddddddddddddddddd
回复

使用道具 举报

0

主题

0

好友

0

积分

求职中

Rank: 1

在线时间
6 小时
应届生币
9 枚
最后登录
2008-11-6
阅读权限
5
精华
0
帖子
21
发表于 2008-10-5 11:40:54 |显示全部楼层
顶等等等等等等等
回复

使用道具 举报

0

主题

0

好友

14

积分

求职中

Rank: 1

在线时间
4 小时
应届生币
6 枚
最后登录
2008-11-22
阅读权限
5
精华
0
帖子
45
发表于 2008-10-5 15:33:34 |显示全部楼层
kn kankan xiexie !!!!!!!!!!!!!!
回复

使用道具 举报

0

主题

0

好友

30

积分

职员

Rank: 2

在线时间
33 小时
应届生币
12 枚
最后登录
2010-3-25
阅读权限
7
精华
0
帖子
74
发表于 2008-10-5 15:51:39 |显示全部楼层
ding thanks a lot
试一下,即使可能性只有1/N,不试试的话,只能是0
回复

使用道具 举报

0

主题

0

好友

12

积分

求职中

Rank: 1

在线时间
18 小时
应届生币
-1 枚
最后登录
2008-11-26
阅读权限
5
精华
0
帖子
39
发表于 2008-10-5 21:21:12 |显示全部楼层
正需要,顶顶顶顶顶顶顶顶顶!
回复

使用道具 举报

0

主题

0

好友

7

积分

求职中

Rank: 1

在线时间
6 小时
应届生币
0 枚
最后登录
2008-12-18
阅读权限
5
精华
0
帖子
28
发表于 2008-10-8 10:17:31 |显示全部楼层
Thank you very much~
回复

使用道具 举报

0

主题

0

好友

9

积分

求职中

Rank: 1

在线时间
9 小时
应届生币
2 枚
最后登录
2012-3-15
阅读权限
5
精华
0
帖子
26
发表于 2008-10-8 10:48:03 |显示全部楼层

dd

ddddddddddddddddddddd
回复

使用道具 举报

0

主题

0

好友

6

积分

求职中

Rank: 1

在线时间
3 小时
应届生币
4 枚
最后登录
2008-10-24
阅读权限
5
精华
0
帖子
15
发表于 2008-10-8 11:00:19 |显示全部楼层

十分感谢啊

 

回复

使用道具 举报

还未进行同步设置
您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 /1 下一条

Archiver|应届生求职网YingJieSheng.COM ( 增值电信业务经营许可证沪B2-20070147 )  

GMT+8, 2012-5-26 08:19

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部