關於包(Package)應用規範的說明 (轉)
一、 dataBase端開發介紹:
package分為兩個部分:1、package head,2、package body。前者為包頭的定義,後者為過程及方法的實體。只要包頭定義中描述足夠詳細,可以隱藏包體的細節。舉例如下:
package head pkg_to
is
--user define data type—
--自定義資料型別--
--user define procedure and function—
--使用者自定義過程和—
--the procedure proc_pass_validate is the process ofpassword validate—
--the param log_id is the pa_id coloum—
--the param log_pass is the pb_yhpwd coloum—
--the param member_name is the pb_name coloum—
--if the member_name is return value “none”,it indicate that the—
--login process has been crash—
--proc_password_validate過程用於密碼的驗證—
--引數log_id為pa_id欄位—
--引數log_pass為pb_yhpwd欄位—
--引數member_name為pb_name欄位—
--如果member_name的返回值為”none”,則說明驗證過程出錯--
procedure proc_password_validate(
log_id in number,
log_pass in varchar2,
member_name out varchar2
);
--the procedure proc_password_change is the process ofpassword change—
--the param log_id is the pa_id coloum—
--the param org_pass is the user’s original password—
--the param new_pass is the user’s new password—
--the param status is the status of this process—
--if the status is return value 0,it indicate that the—
--change process has been validate—
--if the status is return value 1,it indicate that the—
--user’s original password make misetake—
--proc_password_change過程用於密碼的修改—
--引數log_id為pa_id欄位—
--引數org_pass為使用者原來的密碼—
--引數new_pass為使用者新的密碼—
--引數status為該過程的狀態返回值--
--如果status的返回值為0,則說明修改過程成功—
--如果status的返回值為1,則說明使用者的原始密碼有錯--
procedure proc_password_change(
log_id in number,
org_pass in varchar2,
new_pass in varchar2,
status out number
);
end;
因此,我們只需要提供一個規範的包頭資訊就可以滿足大家的開發需要,而包體的詳細過程則可以隱藏,當有新的需要時,只需包,然後給大家重發一個包頭的描述就可以了,在開發階段中,可以先採用procedure,然後統一將所有的procedure打包,在app端的修改很小,只需要更新三行程式碼。
二、 appServer端開發解釋:
1、 jc描述:
package pepper_dog999.Use;
import ..*;
public class JdbcCallPackage {
public static void main(String[] args) {
Connection conn;
String =".jdbc.driver.OracleDriver";
String to:url="jdbc:oracle:thin:@192.168.128.41:1521:ORC2"'>url="jdbc:oracle:thin:@192.168.128.41:1521:ORC2";
try{
conn=JdbcConnDb.connDb(driver,url,"pepper_dog999","bad_boy2");
CallableStatement cstmt=conn.prepareCall("{call pkg_topnet.proc_password_validate(?,?,?)}");
cstmt.setInt(1,10001);
cstmt.setString(2,"pass1");
cstmt.registerOutParameter(3,Types.VARCHAR);
cstmt.executeQuery();
String pbName=cstmt.getString(3);
System.out.println("the output param is pbName,and its value is:"+pbName);
}catch(SQLException ex){
System.out.println("SQL Exception:"+ex.getMessage());
}
}
}
class JdbcConnDb {
public static Connection connDb(String driver,String url,String user,String pass){
Connection conn=null;
try{
Class.forName(driver);
}catch(java.lang.ClassNotFoundException e){
System.out.println("Class Not Found Exception:"+e.getMessage());
}
try{
conn=DriverManager.getConnection(url,user,pass);
}catch(SQLException ex){
System.out.println("SQL Exception:"+ex.getMessage());
}
return(conn);
}
}
其中類connDb類為自定義類,用來產生一個連線的例項。
2、 ODBC中ADO資料模型描述:(各語言根據自身特點調整)
function ConnectOra8(dsn_name,user,password)
set conn=server.Create("ADODB.Connection")
conn.Connectionstring="DSN="&dsn_name&";uid="&user&";pwd="&password&";"
conn.Open
conn=ConnectOra8("dsn_name","user","password")
end funcation
sub ODBCCallPackage()
const adOpenStatic=3
const adCmdText=&h0001
const adCmdStoredProcedure=&H0004
const adParamInput=&H0001
const adParamOutput=&H0002
const adVarChar=200
const adInteger=3
const adDate=7
SQLString="{call pkg_topnet_package.proc_password_validate(?,?,?)}"
conn=connectOra8("conn_Ora","pepper_dog999","bad_boy2")
set comm=server.createObject("ADODB.Command")
with comm
.activeConnection=conn
.commandType=adCmdText
.commandText=SQLString
end with
set pa_id=comm.CreateParameter(pa_id,adInteger,adParamInput,12)
pa_id.value=10001
comm.parameters.append pa_id
set pb_yhpwd=comm.CreateParameter(pb_yhpwd,adVarChar,adParamInput,20)
pb_yhpwd.value="pass1"
comm.parameters.append pb_yhpwd
'output
set pb_name=comm.CreateParameter(pp_name,adVarChar,adParamOutput,20)
comm.parameters.append pb_name
comm.execute
response.write “the output param is member_name and it’s value is”&pb_name
end sub
三、 優越性描述:
使用統一的包(package)管理可以將開發過程中無序的開發工作協調,而又不會對現有的程式碼造成太大的改動。其優點如下:
1、 的管理:可以由專人管理包的更新,和包頭描述的發放,由於隱藏了包體,可以使不太熟悉該開發需求的人很快的上手,因為前端開發的格式可以統一。
2、 的改善:可以將核心的過程和效能要求較高的過程封裝包體中,對效能提升大有好處。
3、 程式碼的管理:由於包體和前端的分離,當需求改變時可以很快的修改。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988104/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- go package包名規範GoPackage
- API關鍵詞介面的應用範圍說明API
- 包頭(Package)與包體(Package body)的學習與應用Package
- npm-package-json-lint 是一個用於檢查 package.json 檔案格式和內容規範的 npm 包。NPMPackageJSON
- 關於GeoWebCache的部署說明Web
- IBM主機巡檢規範說明IBM
- MyDAL – 元件適用範圍說明元件
- Go 應用中 package main 的規則GoPackageAI
- 關於DOCTYPE的使用和說明
- 關於NTP SERVER的配置說明Server
- 關於DedeCMS版本號的說明
- 包裝企業資訊化應用的典範(轉)
- MySQL:關於ICP特性的說明(未完)MySql
- Cz工具集使用介紹 - 規範Git提交說明Git
- Flash應用安全規範
- mssql sqlserver updatetext關鍵字應用簡介說明SQLServer
- Spring 對於事務上的應用的詳細說明Spring
- 關於SmartForm和ScriptForm的輸出格式設定說明(轉載)ORM
- 關於MSCOMM控制元件的一些說明(轉貼)控制元件
- Redis應用配置項說明Redis
- 關於支援OPenACC的編譯器說明編譯
- java 關於操作Collection的一點說明Java
- 關於 RPM 命令的權威說明
- 關於事務的英文說明 Transaction OverviewView
- 關於SAP abap程式開發的說明
- 關於BUGZILLA的說明和安裝
- TPCH模型規範、測試說明及22條語句模型
- 關於FSO靜態生成技術的應用範圍之解決思路 (轉)
- 規範設計Windows應用軟體選單 (轉)Windows
- 關於openssl應用的對話 (轉)
- 關於Java編碼規範的問題Java
- 有關RFC文件的翻譯說明 (轉)
- 關於輕應用,我有話要說...
- JScript中正則表達函式的說明與應用 (轉)JS函式
- git分支管理和工作流規範:基本概念說明Git
- 關於golang中下劃線(_)的語義說明Golang
- Oracle中關於PCTFREE和PCTUSED的說明Oracle
- 關於Numba的執行緒實現的說明執行緒