UserAccount | ||||
UserID | UserName | PassWord | RegisterTime | RegisterIP |
12 | 6 | 6 | 2012-12-31 | 6 |
18 | 5 | 5 | 2013-01-01 | 5 |
19 | 1 | 1 | 2013-01-01 | 1 |
20 | 2 | 2 | 2013-01-01 | 2 |
21 | 3 | 3 | 2013-01-01 | 3 |
22 | 4 | 4 | 2013-01-01 | 4 |
23 | 5 | 5 | 2013-01-01 | 5 |
25 | 7 | 7 | 2013-01-01 | 7 |
26 | 8 | 8 | 2013-01-01 | 8 |
NULL | NULL | NULL | NULL | NULL |
針對(duì)上面的表,我使用存儲(chǔ)過(guò)程對(duì)它做一些操作:
1. 只返回單一記錄集的存儲(chǔ)過(guò)程
-------------執(zhí)行上面的存儲(chǔ)過(guò)程----------------
exec GetUserAccount
2.沒(méi)有輸入輸出的存儲(chǔ)過(guò)程
create Procedure inUserAccount
as
insert into UserAccount (UserName,[PassWord],RegisterTime,RegisterIP) values(9,9,'2013-01-02',9)
go
-------------執(zhí)行上面的存儲(chǔ)過(guò)程----------------
exec inUserAccount
3.有返回值的存儲(chǔ)過(guò)程
create Procedure inUserAccountRe
as
insert into UserAccount (UserName,[PassWord],RegisterTime,RegisterIP) values(10,10,'2013-01-02',10)
return @@rowcount
go
-------------執(zhí)行上面的存儲(chǔ)過(guò)程----------------
exec inUserAccountRe
4.有輸入?yún)?shù)和輸出參數(shù)的存儲(chǔ)過(guò)程
create Procedure GetUserAccountRe
@UserName nchar(20),
@UserID int output
as
if(@UserName>5)
select @UserID=COUNT(*) from UserAccount where UserID>25
else
set @UserID=1000
go
-------------執(zhí)行上面的存儲(chǔ)過(guò)程----------------
exec GetUserAccountRe '7',null
5. 同時(shí)具有返回值、輸入?yún)?shù)、輸出參數(shù)的存儲(chǔ)過(guò)程
create Procedure GetUserAccountRe1
@UserName nchar(20),
@UserID int output
as
if(@UserName>5)
select @UserID=COUNT(*) from UserAccount where UserID>25
else
set @UserID=1000
return @@rowcount
go
-------------執(zhí)行上面的存儲(chǔ)過(guò)程----------------
exec GetUserAccountRe1 '7',null
6.同時(shí)返回參數(shù)和記錄集的存儲(chǔ)過(guò)程
create Procedure GetUserAccountRe2
@UserName nchar(20),
@UserID int output
as
if(@UserName>5)
select @UserID=COUNT(*) from UserAccount where UserID>25
else
set @UserID=1000
select * from UserAccount
return @@rowcount
go
-------------執(zhí)行上面的存儲(chǔ)過(guò)程----------------
exec GetUserAccountRe2 '7',null
7.返回多個(gè)記錄集的存儲(chǔ)過(guò)程
create Procedure GetUserAccountRe3
as
select * from UserAccount
select * from UserAccount where UserID>5
go
-------------執(zhí)行上面的存儲(chǔ)過(guò)程----------------
exec GetUserAccountRe3
小結(jié):上面我們創(chuàng)建了各式的存儲(chǔ)過(guò)程,下面看我們?cè)赾#中怎樣調(diào)用這些存儲(chǔ)過(guò)程。
c#調(diào)用存儲(chǔ)過(guò)程
這里調(diào)用的存儲(chǔ)過(guò)程為上面我寫的那些各式各樣的存儲(chǔ)過(guò)程。
public partial class ProcedureTest : System.Web.UI.Page
{
public static string conn = ConfigurationManager.ConnectionStrings["StuRelationDBConnectionString"].ConnectionString;
public SqlConnection con = new SqlConnection(conn);
protected void Page_Load(object sender, EventArgs e)
{
runGetUserAccountRe3();
}
//只返回單一記錄集的存儲(chǔ)過(guò)程GetUserAccount
public void runGetUserAccount()
{
SqlDataAdapter dp = new SqlDataAdapter(common("GetUserAccount"));
DataSet ds = new DataSet();
// 填充dataset
dp.Fill(ds);
rpt.DataSource = ds;
rpt.DataBind();
}
//沒(méi)有輸入輸出的存儲(chǔ)過(guò)程inUserAccount
public void runinUserAccount()
{
con.Open();
Label1.Text = common("inUserAccount").ExecuteNonQuery().ToString();
con.Close();
}
//有返回值的存儲(chǔ)過(guò)程inUserAccountRe
public void runinUserAccountRe()
{
// 創(chuàng)建參數(shù)
SqlCommand cmd = common("inUserAccountRe");
IDataParameter[] parameters = {
new SqlParameter("rval", SqlDbType.Int,4)
};
// 將參數(shù)類型設(shè)置為 返回值類型
parameters[0].Direction = ParameterDirection.ReturnValue;
// 添加參數(shù)
cmd.Parameters.Add(parameters[0]);
con.Open();
// 執(zhí)行存儲(chǔ)過(guò)程并返回影響的行數(shù)
Label1.Text = cmd.ExecuteNonQuery().ToString();
con.Close();
// 顯示影響的行數(shù)和返回值
Label1.Text += "-" + parameters[0].Value.ToString();
}
//有輸入?yún)?shù)和輸出參數(shù)的存儲(chǔ)過(guò)程
public void runGetUserAccountRe()
{
SqlCommand cmd = common("GetUserAccountRe");
// 創(chuàng)建參數(shù)
IDataParameter[] parameters = {
new SqlParameter("@UserName", SqlDbType.NChar,20) ,
new SqlParameter("@UserID", SqlDbType.Int) ,
};
// 設(shè)置參數(shù)類型
parameters[0].Value = "7";
parameters[1].Direction = ParameterDirection.Output; // 設(shè)置為輸出參數(shù)
// 添加參數(shù)
cmd.Parameters.Add(parameters[0]);
cmd.Parameters.Add(parameters[1]);
con.Open();
// 執(zhí)行存儲(chǔ)過(guò)程并返回影響的行數(shù)
Label1.Text = cmd.ExecuteNonQuery().ToString();
con.Close();
// 顯示影響的行數(shù)和輸出參數(shù)
Label1.Text += "-" + parameters[1].Value.ToString();
}
//同時(shí)具有返回值、輸入?yún)?shù)、輸出參數(shù)的存儲(chǔ)過(guò)程GetUserAccountRe1
public void runGetUserAccountRe1()
{
SqlCommand cmd = common("GetUserAccountRe1");
// 創(chuàng)建參數(shù)
IDataParameter[] parameters = {
new SqlParameter("@UserName", SqlDbType.NChar,20) ,
new SqlParameter("@UserID", SqlDbType.Int) ,
new SqlParameter("rval", SqlDbType.Int,4)
};
// 設(shè)置參數(shù)類型
parameters[0].Value = "7";
parameters[1].Direction = ParameterDirection.Output; // 設(shè)置為輸出參數(shù)
parameters[2].Direction = ParameterDirection.ReturnValue; //設(shè)置為返回值
// 添加參數(shù)
cmd.Parameters.Add(parameters[0]);
cmd.Parameters.Add(parameters[1]);
cmd.Parameters.Add(parameters[2]);
con.Open();
// 執(zhí)行存儲(chǔ)過(guò)程并返回影響的行數(shù)
Label1.Text = cmd.ExecuteNonQuery().ToString();
con.Close();
// 顯示影響的行數(shù)和輸出參數(shù)
Label1.Text += "-輸出參數(shù)為:" + parameters[1].Value.ToString();
Label1.Text += "-返回值為:" + parameters[2].Value.ToString();
}
//同時(shí)返回參數(shù)和記錄集的存儲(chǔ)過(guò)程GetUserAccountRe2
public void runGetUserAccountRe2()
{
SqlCommand cmd = common("GetUserAccountRe2");
// 創(chuàng)建參數(shù)
IDataParameter[] parameters = {
new SqlParameter("@UserName", SqlDbType.NChar,20) ,
new SqlParameter("@UserID", SqlDbType.Int) ,
new SqlParameter("rval", SqlDbType.Int,4)
};
// 設(shè)置參數(shù)類型
parameters[0].Value = "7";
parameters[1].Direction = ParameterDirection.Output; // 設(shè)置為輸出參數(shù)
parameters[2].Direction = ParameterDirection.ReturnValue; //設(shè)置為返回值
// 添加參數(shù)
cmd.Parameters.Add(parameters[0]);
cmd.Parameters.Add(parameters[1]);
cmd.Parameters.Add(parameters[2]);
con.Open();
// 執(zhí)行存儲(chǔ)過(guò)程并返回影響的行數(shù)
Label1.Text = cmd.ExecuteNonQuery().ToString();
DataSet ds = new DataSet();
SqlDataAdapter dt = new SqlDataAdapter(cmd);
dt.Fill(ds);
rpt.DataSource = ds;
rpt.DataBind();
con.Close();
// 顯示影響的行數(shù)和輸出參數(shù)
Label1.Text += "-輸出參數(shù)為:" + parameters[1].Value.ToString();
Label1.Text += "-返回值為:" + parameters[2].Value.ToString();
}
//返回多個(gè)記錄集的存儲(chǔ)過(guò)程
public void runGetUserAccountRe3()
{
DataSet ds = new DataSet();
SqlDataAdapter dt = new SqlDataAdapter(common("GetUserAccountRe3"));
dt.Fill(ds);
rpt1.DataSource = ds.Tables[0].DefaultView;
rpt1.DataBind();
rpt2.DataSource = ds.Tables[1].DefaultView;
rpt2.DataBind();
}
public SqlCommand common(string proName)
{
SqlCommand cmd = new SqlCommand();
// 設(shè)置sql連接
cmd.Connection = con;
// 如果執(zhí)行語(yǔ)句
cmd.CommandText = proName;
// 指定執(zhí)行語(yǔ)句為存儲(chǔ)過(guò)程
cmd.CommandType = CommandType.StoredProcedure;
return cmd;
}
}
select APP_NAME ( ) as w --當(dāng)前會(huì)話的應(yīng)用程序
select @@IDENTITY --返回最后插入的標(biāo)識(shí)值
select USER_NAME() --返回用戶數(shù)據(jù)庫(kù)用戶名
SELECT @@CONNECTIONS --返回自上次SQL啟動(dòng)以來(lái)連接或試圖連接的次數(shù)。
SELECT GETDATE() --當(dāng)前時(shí)間
SELECT @@CPU_BUSY/100 --返回自上次啟動(dòng)SQL 以來(lái) CPU 的工作時(shí)間,單位為毫秒
USE tempdb SELECT @@DBTS as w --為當(dāng)前數(shù)據(jù)庫(kù)返回當(dāng)前 timestamp 數(shù)據(jù)類型的值。這一 timestamp 值保證在數(shù)據(jù)庫(kù)中是唯一的。
select @@IDENTITY as w --返回最后插入的標(biāo)識(shí)值
SELECT @@IDLE as w --返回SQL自上次啟動(dòng)后閑置的時(shí)間,單位為毫秒
SELECT @@IO_BUSY AS w --返回SQL自上次啟動(dòng)后用于執(zhí)行輸入和輸出操作的時(shí)間,單位為毫秒
SELECT @@LANGID AS w --返回當(dāng)前所使用語(yǔ)言的本地語(yǔ)言標(biāo)識(shí)符(ID)。
SELECT @@LANGUAGE AS w --返回當(dāng)前使用的語(yǔ)言名
SELECT @@LOCK_TIMEOUT as w --當(dāng)前會(huì)話的當(dāng)前鎖超時(shí)設(shè)置,單位為毫秒。
SELECT @@MAX_CONNECTIONS as w --返回SQL上允許的同時(shí)用戶連接的最大數(shù)。返回的數(shù)不必為當(dāng)前配置的數(shù)值
EXEC sp_configure --顯示當(dāng)前服務(wù)器的全局配置設(shè)置
SELECT @@MAX_PRECISION as w --返回 decimal 和 numeric 數(shù)據(jù)類型所用的精度級(jí)別,即該服務(wù)器中當(dāng)前設(shè)置的精度。默認(rèn)最大精度38。
select @@OPTIONS as w --返回當(dāng)前 SET 選項(xiàng)的信息。
SELECT @@PACK_RECEIVED as w --返回SQL自啟動(dòng)后從網(wǎng)絡(luò)上讀取的輸入數(shù)據(jù)包數(shù)目。
SELECT @@PACK_SENT as w --返回SQ自上次啟動(dòng)后寫到網(wǎng)絡(luò)上的輸出數(shù)據(jù)包數(shù)目。
SELECT @@PACKET_ERRORS as w --返回自SQL啟動(dòng)后,在SQL連接上發(fā)生的網(wǎng)絡(luò)數(shù)據(jù)包錯(cuò)誤數(shù)。
SELECT @@SERVERNAME as w --返回運(yùn)行SQL服務(wù)器名稱。
SELECT @@SERVICENAME as w --返回SQL正在其下運(yùn)行的注冊(cè)表鍵名
SELECT @@TIMETICKS as w --返回SQL服務(wù)器一刻度的微秒數(shù)
SELECT @@TOTAL_ERRORS AS w --返回 SQL服務(wù)器自啟動(dòng)后,所遇到的磁盤讀/寫錯(cuò)誤數(shù)。
SELECT @@TOTAL_READ as w --返回 SQL服務(wù)器自啟動(dòng)后讀取磁盤的次數(shù)。
SELECT @@TOTAL_WRITE as w --返回SQL服務(wù)器自啟動(dòng)后寫入磁盤的次數(shù)。
SELECT @@TRANCOUNT as w --返回當(dāng)前連接的活動(dòng)事務(wù)數(shù)。
SELECT @@VERSION as w --返回SQL服務(wù)器安裝的日期、版本和處理器類型。
標(biāo)簽:拉薩 上海 貴州 新鄉(xiāng) 呼和浩特 昭通 江蘇 重慶
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《基于存儲(chǔ)過(guò)程的詳細(xì)介紹》,本文關(guān)鍵詞 基于,存儲(chǔ),過(guò)程,的,詳細(xì),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。