如何在aspx中得到在存儲(chǔ)過(guò)程中的的數(shù)值(兼答jspfuns的問(wèn)題)
發(fā)表時(shí)間:2024-02-10 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]這里的存儲(chǔ)過(guò)程是在SQL Server 下的存儲(chǔ)過(guò)程,由于目前豆腐沒(méi)有使用存儲(chǔ)過(guò)程,所以豆腐在舉例子的時(shí)候使用了SQL2K,估計(jì)在Oracle下應(yīng)該也是一樣的,歡迎大家 和豆腐一起來(lái)探討這個(gè)問(wèn)題我們知道在存儲(chǔ)過(guò)程中有個(gè)被稱做output 的參數(shù),他可以在不同的存儲(chǔ)過(guò)程之中互相的傳遞參數(shù),在使用ou...
這里的存儲(chǔ)過(guò)程是在SQL Server 下的存儲(chǔ)過(guò)程,由于目前豆腐沒(méi)有使用存儲(chǔ)過(guò)程,所以豆腐在舉例子的時(shí)候
使用了SQL2K,估計(jì)在Oracle下應(yīng)該也是一樣的,歡迎大家 和豆腐一起來(lái)探討這個(gè)問(wèn)題
我們知道在存儲(chǔ)過(guò)程中有個(gè)被稱做output 的參數(shù),他可以在不同的存儲(chǔ)過(guò)程之中互相的傳遞參數(shù),在使用output 的時(shí)候
要注意下面的情況
OUTPUT 變量必須在創(chuàng)建表和使用該變量時(shí)都進(jìn)行定義。參數(shù)名和變量名不一定要匹配,不過(guò)數(shù)據(jù)類(lèi)型和參數(shù)位置必須匹配
我們創(chuàng)建一個(gè)最簡(jiǎn)單的存儲(chǔ)過(guò)程
CREATE PROCEDURE test
(@subject Varchar(15) Output)
AS
select @subject='豆腐制作 都是精品'
GO
可是如何取得回掉的參數(shù)呢?白思不得其解,后來(lái)終于在SQL AnaLyzer 上得到了啟發(fā),
DECLARE @aa Varchar(10)
execute test @aa output
select aa=@aa
根據(jù)這個(gè),我們可在Asp.Net中利用ADO+的多語(yǔ)句處理功能來(lái)實(shí)現(xiàn)我們的設(shè)想,最終通過(guò)SQLDataReader 如同
Select 語(yǔ)句一樣來(lái)得到輸出,完整的程序如下。
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SQL" %>
<script language="C#" runat=server>
protected void Page_Load(Object Src, EventArgs E){
SQLDataReader dbRead;
SQLCommand dbComm;
String strSQL;
String strConn;
SQLConnection conn;
Hashtable Cfg=new Hashtable();
Cfg = (Hashtable)Context.GetConfig("appsettings");
strConn=Cfg["Conn"].ToString();
conn = new SQLConnection(strConn);
strSQL="DECLARE @aa Varchar(10)\nexecute test @aa output\nselect aa=@aa";
dbComm = new SQLCommand(strSQL, conn);
dbComm.ActiveConnection.Open();
dbComm.Execute(out dbRead);
dbRead.Read();
showmsg.Text=dbRead["aa"].ToString();
}
</script>
<html>
<head>
<title>測(cè)試存儲(chǔ)過(guò)程</title>
</head>
<body>
<asp:Label id=showmsg runat=server />
</body>
</html>
其實(shí),豆腐在實(shí)際的應(yīng)用中一般是很少使用output 參數(shù)的,豆腐一般都是這樣使用的:
存儲(chǔ)過(guò)程 的內(nèi)容如下:
CREATE PROCEDURE test
AS
select @subject='豆腐制作 都是精品'
select aa=@subject
GO
就是在 存儲(chǔ)過(guò)程 的最后依據(jù)利用 Select 讓存儲(chǔ)過(guò)程返回一個(gè)記錄集合,然后我們就可以把這個(gè)存儲(chǔ)過(guò)程
看作是一個(gè) select 語(yǔ)句來(lái)處理了,這樣下來(lái),asp.Net 的SQL 語(yǔ)句就變成了
strSQL="test";
其他的內(nèi)容都變化,一樣可以得到相同的效果