存储过程

http://www.cnblogs.com/knowledgesea/archive/2013/01/02/2841588.html



-------------创建名为GetUserAccount的存储过程---------------- 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 -------------执行上面的存储过程---------------- exec GetUserAccountRe2 '7',null


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();
}

//只返回单一记录集的存储过程GetUserAccount
public void runGetUserAccount()
{
SqlDataAdapter dp = new SqlDataAdapter(common("GetUserAccount"));
DataSet ds = new DataSet();
// 填充dataset
dp.Fill(ds);
rpt.DataSource = ds;
rpt.DataBind();

}

//没有输入输出的存储过程inUserAccount
public void runinUserAccount()
{
con.Open();
Label1.Text = common("inUserAccount").ExecuteNonQuery().ToString();
con.Close();
}

//有返回值的存储过程inUserAccountRe
public void runinUserAccountRe()
{
// 创建参数
SqlCommand cmd = common("inUserAccountRe");
IDataParameter[] parameters = {
new SqlParameter("rval", SqlDbType.Int,4)
};
// 将参数类型设置为 返回值类型
parameters[0].Direction = ParameterDirection.ReturnValue;
// 添加参数
cmd.Parameters.Add(parameters[0]);
con.Open();
// 执行存储过程并返回影响的行数
Label1.Text = cmd.ExecuteNonQuery().ToString();
con.Close();
// 显示影响的行数和返回值
Label1.Text += "-" + parameters[0].Value.ToString();
}

//有输入参数和输出参数的存储过程
public void runGetUserAccountRe()
{
SqlCommand cmd = common("GetUserAccountRe");
// 创建参数
IDataParameter[] parameters = {
new SqlParameter("@UserName", SqlDbType.NChar,20) ,
new SqlParameter("@UserID", SqlDbType.Int) ,
};
// 设置参数类型
parameters[0].Value = "7";
parameters[1].Direction = ParameterDirection.Output; // 设置为输出参数
// 添加参数
cmd.Parameters.Add(parameters[0]);
cmd.Parameters.Add(parameters[1]);
con.Open();
// 执行存储过程并返回影响的行数
Label1.Text = cmd.ExecuteNonQuery().ToString();
con.Close();
// 显示影响的行数和输出参数
Label1.Text += "-" + parameters[1].Value.ToString();

}

//同时具有返回值、输入参数、输出参数的存储过程GetUserAccountRe1
public void runGetUserAccountRe1()
{
SqlCommand cmd = common("GetUserAccountRe1");
// 创建参数
IDataParameter[] parameters = {
new SqlParameter("@UserName", SqlDbType.NChar,20) ,
new SqlParameter("@UserID", SqlDbType.Int) ,
new SqlParameter("rval", SqlDbType.Int,4)
};
// 设置参数类型
parameters[0].Value = "7";
parameters[1].Direction = ParameterDirection.Output; // 设置为输出参数
parameters[2].Direction = ParameterDirection.ReturnValue; //设置为返回值
// 添加参数
cmd.Parameters.Add(parameters[0]);
cmd.Parameters.Add(parameters[1]);
cmd.Parameters.Add(parameters[2]);
con.Open();
// 执行存储过程并返回影响的行数
Label1.Text = cmd.ExecuteNonQuery().ToString();
con.Close();
// 显示影响的行数和输出参数
Label1.Text += "-输出参数为:" + parameters[1].Value.ToString();
Label1.Text += "-返回值为:" + parameters[2].Value.ToString();

}

//同时返回参数和记录集的存储过程GetUserAccountRe2
public void runGetUserAccountRe2()
{
SqlCommand cmd = common("GetUserAccountRe2");
// 创建参数
IDataParameter[] parameters = {
new SqlParameter("@UserName", SqlDbType.NChar,20) ,
new SqlParameter("@UserID", SqlDbType.Int) ,
new SqlParameter("rval", SqlDbType.Int,4)
};
// 设置参数类型
parameters[0].Value = "7";
parameters[1].Direction = ParameterDirection.Output; // 设置为输出参数
parameters[2].Direction = ParameterDirection.ReturnValue; //设置为返回值
// 添加参数
cmd.Parameters.Add(parameters[0]);
cmd.Parameters.Add(parameters[1]);
cmd.Parameters.Add(parameters[2]);
con.Open();
// 执行存储过程并返回影响的行数
Label1.Text = cmd.ExecuteNonQuery().ToString();
DataSet ds = new DataSet();
SqlDataAdapter dt = new SqlDataAdapter(cmd);
dt.Fill(ds);
rpt.DataSource = ds;
rpt.DataBind();
con.Close();
// 显示影响的行数和输出参数
Label1.Text += "-输出参数为:" + parameters[1].Value.ToString();
Label1.Text += "-返回值为:" + parameters[2].Value.ToString();

}

//返回多个记录集的存储过程
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();
// 设置sql连接
cmd.Connection = con;
// 如果执行语句
cmd.CommandText = proName;
// 指定执行语句为存储过程
cmd.CommandType = CommandType.StoredProcedure;
return cmd;
}
}

select APP_NAME ( ) as w --当前会话的应用程序

select @@IDENTITY --返回最后插入的标识值
select USER_NAME() --返回用户数据库用户名

SELECT @@CONNECTIONS --返回自上次SQL启动以来连接或试图连接的次数。
SELECT GETDATE() --当前时间
SELECT @@CPU_BUSY/100 --返回自上次启动SQL 以来 CPU 的工作时间,单位为毫秒

USE tempdb SELECT @@DBTS as w --为当前数据库返回当前 timestamp 数据类型的值。这一 timestamp 值保证在数据库中是唯一的。
select @@IDENTITY as w --返回最后插入的标识值
SELECT @@IDLE as w --返回SQL自上次启动后闲置的时间,单位为毫秒
SELECT @@IO_BUSY AS w --返回SQL自上次启动后用于执行输入和输出操作的时间,单位为毫秒
SELECT @@LANGID AS w --返回当前所使用语言的本地语言标识符(ID)。
SELECT @@LANGUAGE AS w --返回当前使用的语言名
SELECT @@LOCK_TIMEOUT as w --当前会话的当前锁超时设置,单位为毫秒。
SELECT @@MAX_CONNECTIONS as w --返回SQL上允许的同时用户连接的最大数。返回的数不必为当前配置的数值
EXEC sp_configure --显示当前服务器的全局配置设置
SELECT @@MAX_PRECISION as w --返回 decimal 和 numeric 数据类型所用的精度级别,即该服务器中当前设置的精度。默认最大精度38。
select @@OPTIONS as w --返回当前 SET 选项的信息。
SELECT @@PACK_RECEIVED as w --返回SQL自启动后从网络上读取的输入数据包数目。
SELECT @@PACK_SENT as w --返回SQ自上次启动后写到网络上的输出数据包数目。
SELECT @@PACKET_ERRORS as w --返回自SQL启动后,在SQL连接上发生的网络数据包错误数。
SELECT @@SERVERNAME as w --返回运行SQL服务器名称。
SELECT @@SERVICENAME as w --返回SQL正在其下运行的注册表键名
SELECT @@TIMETICKS as w --返回SQL服务器一刻度的微秒数
SELECT @@TOTAL_ERRORS AS w --返回 SQL服务器自启动后,所遇到的磁盘读/写错误数。
SELECT @@TOTAL_READ as w --返回 SQL服务器自启动后读取磁盘的次数。
SELECT @@TOTAL_WRITE as w --返回SQL服务器自启动后写入磁盘的次数。
SELECT @@TRANCOUNT as w --返回当前连接的活动事务数。
SELECT @@VERSION as w --返回SQL服务器安装的日期、版本和处理器类型。

原文地址:https://www.cnblogs.com/jianghaidong/p/4892891.html