国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

存儲過程介紹及asp+存儲過程的使用

2019-11-18 20:01:59
字體:
來源:轉載
供稿:網(wǎng)友

一、先介紹一下什么是存儲過程


存儲過程是利用SQL Server所提供的Tranact-SQL語言所編寫的程序。Tranact-SQL語言是SQL Server提供專為設計數(shù)據(jù)庫應用程序的語言,它是應用程序和SQL Server數(shù)據(jù)庫間的主要程序式設計界面。它好比Oracle數(shù)據(jù)庫系統(tǒng)中的PRo-SQL和Informix的數(shù)據(jù)庫系統(tǒng)能夠中的Informix-4GL語言一樣。這類語言主要提供以下功能,讓用戶可以設計出符合引用需求的程序:
1)、變量說明
2)、ANSI兼容的SQL命令(如Select,Update….)
3)、一般流程控制命令(if…else…、while….)
4)、內部函數(shù)


二、存儲過程的書寫格


CREATE PROCEDURE [擁有者.]存儲過程名[;程序編號]
[(參數(shù)#1,…參數(shù)#1024)]
[WITH
 {RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}
]
[FOR REPLICATION]
AS 程序行

其中存儲過程名不能超過128個字。每個存儲過程中最多設定1024個參數(shù)
(SQL Server 7.0以上版本),參數(shù)的使用方法如下:

@參數(shù)名 數(shù)據(jù)類型 [VARYING] [=內定值] [OUTPUT]

每個參數(shù)名前要有一個“@”符號,每一個存儲過程的參數(shù)僅為該程序內部使用,參數(shù)的類型除了IMAGE外,其他SQL Server所支持的數(shù)據(jù)類型都可使用。
[=內定值]相當于我們在建立數(shù)據(jù)庫時設定一個字段的默認值,這里是為這個參數(shù)設定默認值。[OUTPUT]是用來指定該參數(shù)是既有輸入又有輸出值的,也就是在調用了這個存儲過程時,如果所指定的參數(shù)值是我們需要輸入的參數(shù),同時也需要在結果中輸出的,則該項必須為OUTPUT,而如果只是做輸出參數(shù)用,可以用CURSOR,同時在使用該參數(shù)時,必須指定VARYING和OUTPUT這兩個語句。

 例子:
 CREATE PROCEDURE order_tot_amt @o_id int,@p_tot int output AS
 SELECT @p_tot = sum(Unitprice*Quantity)
 FROM orderdetails
 WHERE ordered=@o_id
 
 例子說明:
該例子是建立一個簡單的存儲過程order_tot_amt,這個存儲過程根據(jù)用戶輸入的定單ID號碼(@o_id),由定單明細表(orderdetails)中計算該定單銷售總額[單價(Unitprice)*數(shù)量(Quantity)],這一金額通過@p_tot這一參數(shù)輸出給調用這一存儲過程的程序


三、在SQL Server中執(zhí)行存儲過程


在SQL Server的查詢分析器中,輸入以下代碼:
declare @tot_amt int
execute order_tot_amt 1,@tot_amt output
select @tot_amt

以上代碼是執(zhí)行order_tot_amt這一存儲過程,以計算出定單編號為1的定單銷售金額,我們定義@tot_amt為輸出參數(shù),用來承接我們所要的結果


四、在asp中調用存儲過程


<!--           必須加載adovbs.inc文件,否則將出錯        -->
<!--#include file="adovbs.inc"-->
<%
dim objCnn
dim objCmd
dim Rs
const o_id=112

'-----建立Connection對象----------
set objCnn=Server.CreateObject("Adodb.connection")
objCnn.Open "driver={sql server};server=localhost;uid=sa;pwd=cncanet;database=check;"
'-----建立Command對象-----------
set objCmd=Server.CreateObject("Adodb.Command")
objCmd.ActiveConnection=objCnn
objCmd.CommandText="order_tot_amt" '指定存儲過程名稱
objCmd.CommandType=adCmdStoredProc '其為Stored Procedure
'-----準備stored procedure 的參數(shù)-------
objCmd.Parameters.Append _
 objCmd.CreateParameter("o_id",adInteger,adParamInput,,o_id)
objCmd.Parameters.Append _
 objCmd.CreateParameter("p_tot",adBigInt,adParamOutput,,0)
'-----執(zhí)行存儲過程----------------------
objCmd.Execute

'-----輸出參數(shù)以及處理結果--------------
for each parm in objCmd.Parameters
 Response.Write parm.name &"="& trim(parm) &"<br>"
next
%>


以上代碼在Win2000+IIS5.0+SQL Server2000中通過

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 揭西县| 吉木乃县| 尼玛县| 罗山县| 婺源县| 新泰市| 彰化市| 安阳县| 沾化县| 开封市| 尖扎县| 航空| 原阳县| 尖扎县| 黑山县| 高清| 酉阳| 明溪县| 无为县| 安福县| 喀喇| 哈尔滨市| 商城县| 太白县| 宜兰市| 石台县| 东阳市| 弋阳县| 松滋市| 侯马市| 涡阳县| 满洲里市| 和硕县| 桓仁| 义乌市| 仁布县| 温宿县| 大洼县| 赞皇县| 太和县| 天镇县|