?? jb4-1-6-2.htm
字號:
<!-- saved from url=(0022)http://internet.e-mail -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta name="Author" content="TF">
<meta name="generator" content="Microsoft FrontPage 4.0">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>數(shù)據(jù)庫應(yīng)用程序開發(fā)者的指南:從數(shù)據(jù)來源檢索數(shù)據(jù)</title>
<link type="text/css" href="../jbdocs.css" rel="stylesheet">
</head>
<body bgcolor="#fefef2" style="FONT-SIZE: 9pt">
<h2><FONT
color=#0080FF size=3 ><b>存儲過程:提示和建議</b></font></h2><hr>
譯者名字: chenjn(JD013) <br>
郵件地址:<a href="mailto:chenjn@fulltop.com">chenjn@fulltop.com</a>
<blockquote class="bsku">
<p><font color="#FF0000">數(shù)據(jù)庫應(yīng)用開發(fā)是 JBuilder 專業(yè)版和企業(yè)版的一個特征。<br>分布式的應(yīng)用開發(fā)是 JBuilder 企業(yè)版的一個特征。</font></p>
</blockquote>
<p>這一組話題包含了對你有幫助的建議</p>
<ul>
<li>理解使用一個存儲過程的選項</li>
<li>利用教程創(chuàng)建一個過程</li>
</ul>
<a name="statement"></a>
<p><font size="3" color="#000080"><b>關(guān)于存儲過程的退出順序, SQL 語句,和服務(wù)器特定的程序調(diào)用的討論</b></font></p>
<!--BNDX="stored procedures:creating;escape sequences;procedure calls:server-specific"-->
<!--BNDX="JDBC escape sequences;SQL statements:discussion of"-->
<p>當要向<code><font size="2">procedure</font></code>性質(zhì)編輯器或代碼中的 Stored Procedure Escape 或者 SQL Statement 域輸入信息時, 你有三種類型的語句可用來輸入。他們是:</p>
<ul>
<li>
<p>選擇一個存在的過程。</p>
<p>單擊<code>procedure</code>性質(zhì)編輯器中的 Browse Procedures,來瀏覽一個存在的存儲過程的數(shù)據(jù)庫。一張 你所連接的數(shù)據(jù)庫的可用進程名稱列表將被顯示。如果是InterBase服務(wù)器并且你選擇了一個沒有返回值的進程,你將收到效果通知。 如果你選擇了一個沒有返回值的進程, JBuilder 將嘗試為那個程序調(diào)用生成正確的退出語法。然而, 你或許需要編輯自動產(chǎn)生的語句來正確對應(yīng)于你的服務(wù)器的句法。對于另外的數(shù)據(jù)庫而言,僅僅是那個進程的名字通過 Select Procedures 對話框被插入了而已。</p>
<p>如果過程正在期望參數(shù), 你必須使他們與參數(shù)的列名相匹配。</p>
</li>
<li>輸入一個 JDBC 程序的退出順序。
<p>使用下列格式來輸入一個 JDBC 程序的退出順序:</p>
<ul>
<li>{call PROCEDURENAME (?,?,?,...)} for procedures</li>
<li>{?= call FUNCTIONNAME (?,?,?,...)} for functions</li>
</ul>
</li>
<li>
<p>輸入服務(wù)器特定的程序調(diào)用語法。</p>
<p>當一個服務(wù)器允許獨立的過程呼叫句法時,你可輸入這樣的語法來代替一個存在的存儲過程或一個 JDBC 程序的退出順序。例如,服務(wù)器特定的語法有可能是這個樣子的:</p>
<ul>
<li>execute procedure PROCEDURENAME ?,?,?</li>
</ul>
</li>
</ul>
<p>在前兩個例子當中,參數(shù)標記和問號可以用 ParameterName 表單中已命名的參數(shù)來替代。使用已命名參數(shù)的例子請參看"<a href="prov_procedure_disc2.html">范例: Oracle PL/SQL 存儲過程中使用參數(shù)</a>".使用 InterBase 存儲過程的范例請參看"<a href="prov_procedure_disc2.html">范例: 使用 InterBase 存儲過程</a>".</p>
<!--***********************************************************************-->
<a name="manual"></a>
<p><font color="#000080" size="3"><b>手工地為教程創(chuàng)建表單和過程</b></font></p>
<!--BNDX="database tutorials:creating stored procedures;tutorials:creating stored procedures"-->
<!--BNDX="stored procedures:tutorial;SimpleStoredProcedure sample;ProcedureDataSet component:tutorial"-->
<p>存儲過程由一組 SQL 語句組成。 These statements can easily be written and compiled in JBuilder by creating a Java file, entering the statements, then compiling the code. If you do not have access to the sample project SimpleStoredProcedure or if you would like to learn how to create a table and insert, update, and delete procedures from JBuilder, follow these steps: </p>
<ol>
<li>從菜單選擇 File|Close All 。
</li>
<li>從菜單選擇 File|New Project.
</li>
<li>在工程向?qū)Ю锔奈募夸浐凸こ堂麨?lt;code><font size="2">SimpleStoredProcedure/ProcSetUp/ProcSetUp.jpr</font></code> 。</li>
<li>
<p>選擇 File|New, 然后選擇 Class。</p>
</li>
<li>在 Class wizard 中更改 Class Name 為 <code>ProcSetUp</code> 。 單擊 OK,創(chuàng)建文件 <code><font size="2">ProcSetUp.java</font></code>。
</li>
<li>在 Source 窗口編輯代碼或者從在線幫助復(fù)制粘貼以下的代碼:
<p>
<br>
package ProcSetUp;<br>
<br>
import com.borland.dx.dataset.*;<br>
import com.borland.dx.sql.dataset.*;<br>
import java.sql.*;<br>
<br>
public class CreateProcedures {<br>
<br>
public static void main(String[] args) throws DataSetException {<br>
Database database1 = new Database();<br>
database1.setConnection(new
ConnectionDescriptor("jdbc:interbase://<IP address or
localhost>/<path to .gdb file>", "SYSDBA",
"masterkey", false, "interbase.interclient.Driver"));<br>
try { database1.executeStatement("DROP PROCEDURE
GET_COUNTRIES"); } catch (Exception ex) {};<br>
try { database1.executeStatement("DROP PROCEDURE
UPDATE_COUNTRY"); } catch (Exception ex) {};<br>
try { database1.executeStatement("DROP PROCEDURE
INSERT_COUNTRY"); } catch (Exception ex) {};<br>
try { database1.executeStatement("DROP PROCEDURE
DELETE_COUNTRY"); } catch (Exception ex) {};<br>
database1.executeStatement(getCountriesProc);<br>
database1.executeStatement(updateProc);<br>
database1.executeStatement(deleteProc);<br>
database1.executeStatement(insertProc);<br>
database1.closeConnection();<br>
} <br>
<br>
static final String getCountriesProc = <br>
<br>
"CREATE PROCEDURE GET_COUNTRIES RETURNS (
/r/n"+<br>
" COUNTRY
VARCHAR(15),
/r/n"+<br>
" CURRENCY VARCHAR(10) )
AS
/r/n"+<br>
"BEGIN
/r/n"+<br>
" FOR SELECT c.country,
c.currency
/r/n"+<br>
" FROM country
c
/r/n"+<br>
" INTO
:COUNTRY,:CURRENCY
/r/n"+<br>
"
DO
/r/n"+<br>
"
BEGIN
/r/n"+<br>
"
SUSPEND;
/r/n"+<br>
"
END
/r/n"+<br>
"END;";<br>
<br>
<br>
<br>
static final String updateProc = <br>
<br>
"CREATE PROCEDURE
UPDATE_COUNTRY(
/r/n"+<br>
" OLD_COUNTRY
VARCHAR(15),
/r/n"+<br>
" NEW_COUNTRY
VARCHAR(15),
/r/n"+<br>
" NEW_CURRENCY VARCHAR(20) )
AS
/r/n"+<br>
"BEGIN
/r/n"+<br>
" UPDATE
country
/r/n"+<br>
" SET country =
:NEW_COUNTRY
/r/n"+<br>
" WHERE country =
:OLD_COUNTRY;
/r/n"+<br>
"END;";<br>
<br>
<br>
<br>
static final String insertProc = <br>
<br>
"CREATE PROCEDURE
INSERT_COUNTRY(
/r/n"+<br>
" NEW_COUNTRY
VARCHAR(15),
/r/n"+<br>
" NEW_CURRENCY VARCHAR(20) )
AS
/r/n"+<br>
"BEGIN
/r/n"+<br>
" INSERT INTO country(country,currency)
/r/n"+<br>
" VALUES
(:NEW_COUNTRY,:NEW_CURRENCY); /r/n"+<br>
"END;";<br>
<br>
<br>
static final String deleteProc = <br>
<br>
"CREATE PROCEDURE
DELETE_COUNTRY(
/r/n"+<br>
" OLD_COUNTRY VARCHAR(15) )
AS
/r/n"+<br>
"BEGIN
/r/n"+<br>
" DELETE FROM
country
/r/n"+<br>
" WHERE country =
:OLD_COUNTRY;
/r/n"+<br>
"END;";<br>
} <br>
</p>
</li>
<li>右擊工程面板中的<code>ProcSetUp.java</code>文件,然后選擇運行。這一步驟在服務(wù)器里生成了表和程序。</li>
<li>從菜單選擇 File|Close 。</li>
</ol>
<p>這是一個非常簡單的程序。建議你在編寫更復(fù)雜的存儲程序時,參考你的數(shù)據(jù)庫文檔。</p>
</body>
</html>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -