亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1389 | 回復(fù): 0
打印 上一主題 下一主題

用SQL語(yǔ)句創(chuàng)建存儲(chǔ)過(guò)程 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2008-12-25 09:01 |只看該作者 |倒序?yàn)g覽

用SQL語(yǔ)句創(chuàng)建存儲(chǔ)過(guò)程

本節(jié)例示一個(gè)不帶參數(shù)的簡(jiǎn)單存儲(chǔ)過(guò)程。多數(shù)存儲(chǔ)過(guò)程的功能比本例復(fù)雜多了,但這里主要說(shuō)明存儲(chǔ)過(guò)程的一些基本要點(diǎn)。如前面所述,不同DBMS定義存儲(chǔ)過(guò)程的語(yǔ)法是不同的。例如,有些DBMS使用begin . . . end或其他關(guān)鍵字指明存儲(chǔ)過(guò)程定義的開(kāi)始和結(jié)束。在有些DBMS中,下面的SQL語(yǔ)句可創(chuàng)建一個(gè)存儲(chǔ)過(guò)程:
create procedure SHOW_SUPPLIERS
as
select SUPPLIERS.SUP_NAME, COFFEES.COF_NAME
from SUPPLIERS, COFFEES
where SUPPLIERS.SUP_ID = COFFEES.SUP_ID
order by SUP_NAME
下面的代碼將SQL語(yǔ)句放到一個(gè)字符串中,然后賦給變量createProcedure以備后用:
String createProcedure = "create procedure SHOW_SUPPLIERS " +
                         "as " +
                         "select SUPPLIERS.SUP_NAME, COFFEES.COF_NAME " +
                         "from SUPPLIERS, COFFEES " +
                         "where SUPPLIERS.SUP_ID = COFFEES.SUP_ID " +
                         "order by SUP_NAME";
下面的代碼段使用Connection對(duì)象con來(lái)創(chuàng)建Statement對(duì)象,用于把創(chuàng)建存儲(chǔ)過(guò)程的SQL語(yǔ)句發(fā)送給數(shù)據(jù)庫(kù):
Statement stmt = con.createStatement();
stmt.executeUpdate(createProcedure);
存儲(chǔ)過(guò)程SHOW_SUPPLIERS將作為一個(gè)可調(diào)用的數(shù)據(jù)庫(kù)對(duì)象在數(shù)據(jù)庫(kù)中編譯并存儲(chǔ),調(diào)用時(shí)就像調(diào)用其他方法一樣。
從JDBC調(diào)用存儲(chǔ)過(guò)程
JDBC允許在用Java編寫的程序中調(diào)用存儲(chǔ)過(guò)程。第一步是創(chuàng)建一個(gè)CallableStatement對(duì)象。就像Statement和PreparedStatement對(duì)象一樣,利用一個(gè)打開(kāi)的Connection對(duì)象即可完成創(chuàng)建。CallableStatement對(duì)象包含了存儲(chǔ)過(guò)程的一個(gè)調(diào)用;但它不包含存儲(chǔ)過(guò)程本身。下面的第一行代碼使用連接con創(chuàng)建了存儲(chǔ)過(guò)程SHOW_SUPPLIERS的一個(gè)調(diào)用。花括號(hào)內(nèi)的那部分就是存儲(chǔ)過(guò)程的轉(zhuǎn)義語(yǔ)法。當(dāng)驅(qū)動(dòng)程序碰到“{call SHOW_SUPPLIERS}”時(shí),它將把這個(gè)轉(zhuǎn)義語(yǔ)法轉(zhuǎn)換成數(shù)據(jù)庫(kù)使用的本地SQL,以調(diào)用名為SHOW_SUPPLIERS的存儲(chǔ)過(guò)程。
CallableStatement cs = con.prepareCall("{call SHOW_SUPPLIERS}");
ResultSet rs = cs.executeQuery();
執(zhí)行后結(jié)果集rs的內(nèi)容如下:
SUP_NAME                        COF_NAME
----------------                -----------------------
Acme, Inc.                        Colombian
Acme, Inc.                        Colombian_Decaf
Superior Coffee                        French_Roast
Superior Coffee                        French_Roast_Decaf
The High Ground                        Espresso
注意,用于執(zhí)行cs的方法是executeQuery,因?yàn)閏s調(diào)用的存儲(chǔ)過(guò)程包含一個(gè)查詢,執(zhí)行后產(chǎn)生一個(gè)結(jié)果集。如果存儲(chǔ)過(guò)程包含一條更新或一條DLL語(yǔ)句,那就要使用executeUpdate方法。但有時(shí)一個(gè)存儲(chǔ)過(guò)程包含多條SQL語(yǔ)句,因而它產(chǎn)生的不只是一個(gè)結(jié)果集、不只是一個(gè)更新計(jì)數(shù)或產(chǎn)生一些結(jié)果集和更新計(jì)數(shù)的組合。這樣就有多個(gè)結(jié)果集,這時(shí)就應(yīng)該使用execute方法來(lái)執(zhí)行CallableStatement。
CallableStatement類是PreparedStatement的子類,因此CallableStatement對(duì)象可與PreparedStatement對(duì)象一樣帶有輸入?yún)?shù)。此外,CallableStatement對(duì)象還可帶輸出參數(shù)或輸入/輸出參數(shù)。INOUT參數(shù)和execute方法很少使用。要獲取更詳細(xì)信息,請(qǐng)參考“使用Java進(jìn)行JDBC數(shù)據(jù)庫(kù)訪問(wèn)”。


本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u1/50157/showart_1740700.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP