这个存储过程怎么写?
我想实现在以下的功能,不知道存储过程怎么建立。
表,user_data , 按时间字段 update_last desc 索引 100 条记录,需要取得记录集用于显示。并更新这些记录的 update_last 字段的值为 now() 。
最好能用一个存储过程实现
另外,不知道怎么用 asp.net 调用存储过程。请给详细代码呀。
问题点数:0、回复次数:15Top
1 楼ponycsdn(驰骏)回复于 2003-12-01 11:59:55 得分 0
// 打开一篇新文章供部门用户使用
// CREATE PROCEDURE Article_OneArticle_Open @ArticleID int AS
// SELECT
// Title,Content,EditionID,DepartmentID,Author,DatePub
// FROM
// Article_Publish
// WHERE
// ArticleID = @ArticleID
// GO
public SqlDataReader OpenOneArticle(int articleID)
{
SqlCommand sqlCmdOpenOneArticle = new SqlCommand("Article_OneArticle_Open",DataBaseConnection);
sqlCmdOpenOneArticle.CommandType = CommandType.StoredProcedure;
sqlCmdOpenOneArticle.Parameters.Add(new SqlParameter("@ArticleID",SqlDbType.Int,4));
sqlCmdOpenOneArticle.Parameters["@ArticleID"].Value = articleID;
if (DataBaseConnection.State != ConnectionState.Open)
{
DataBaseConnection.Open();
}
SqlDataReader sqlDROpenOneArticle = sqlCmdOpenOneArticle.ExecuteReader(CommandBehavior.CloseConnection);
return sqlDROpenOneArticle;
}Top
2 楼ponycsdn(驰骏)回复于 2003-12-01 12:01:41 得分 0
select top 100
order by kkkk DESC
update
Top
3 楼sql2000(sql)回复于 2003-12-01 12:03:44 得分 0
老大,看你们的帖子,头晕,来点解决问题的东东啊。俺对 存储过程只知道一点点点....Top
4 楼ponycsdn(驰骏)回复于 2003-12-01 12:08:05 得分 0
存储过程可以理解成带变量的sql语句。要是闲麻烦在视图中先定义然后把代码考出来。
最上面的是一个很简单的存储过程,还有一个方法其中调用了存储过程。Top
5 楼ponycsdn(驰骏)回复于 2003-12-01 12:09:33 得分 0
当然存储过程的这个理解并不是完善的,可以先这么认为然后在拓展。Top
6 楼xiandaliu(仙达流,菜鸟先飞)回复于 2003-12-01 12:21:59 得分 0
create PROCEDURE test
declare @sql varchar(8000)
BEGIN TRANSACTION
--创建自增ID列
exec('alter table user_data add tempid int IDENTITY(1,1)')
if @@error <> 0 goto err
更新
set @sql='update user_data set update_last='''+cast( getdate() as varchar )+''' where tempid<=100'
exec(@sql)
if @@error <> 0 goto err
--删除自增ID列
exec('alter table user_data drop column tempid ')
if @@error <> 0 goto err
commit tran
return
err:
rollback tran
return
go
SqlCommand cmd=new SqlCommand();
cmd.CommandType=CommandType.StoredProcedure;
cmd.CommandText="test";
......Top
7 楼xiandaliu(仙达流,菜鸟先飞)回复于 2003-12-01 12:23:00 得分 0
自己改改吧,到数据库论坛上问问Top
8 楼jordano7832(康师傅)回复于 2003-12-01 12:34:41 得分 0
楼上那个就行Top
9 楼sql2000(sql)回复于 2003-12-01 22:27:20 得分 0
to xiandaliu(仙达流,菜鸟先飞)
按你的来着,但是...
提示有错呀,不知道是怎么回事,
未找到类型“SqlCommand”的公共成员“ExecuteQuery”。
对怎么调用也不清楚,这样的,有没错?
Dim objRead As SqlDataReader
Dim myConnection As New SqlConnection
myConnection.ConnectionString = Application("strDSN")
myConnection.Open()
Dim cmd = New SqlCommand("update_last", myConnection)
cmd.CommandType = CommandType.StoredProcedure
cmd.ExecuteQuery()Top
10 楼xiandaliu(仙达流,菜鸟先飞)回复于 2003-12-02 10:07:39 得分 0
cmd.CommandText="proname"
cmd.ExecuteNonQuery()
我写的存储过程可能会有错误,你最好到数据库版再问问。
Top
11 楼ponycsdn(驰骏)回复于 2003-12-02 10:40:34 得分 0
你的调用有错,你看看我上面的例子有参数的调用,不然就看看快速入门,用例子的。Top
12 楼lemong(風之影)回复于 2003-12-02 11:11:00 得分 0
ExecuteNonQuery
受 .NET Framework 精简版的支持。
对连接执行 Transact-SQL 语句并返回受影响的行数。
ExecuteReader
受 .NET Framework 精简版的支持。
已重载。将 CommandText 发送到 Connection 并生成一个 SqlDataReader。
ExecuteScalar
受 .NET Framework 精简版的支持。
执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行。
-----------------------
这是sqlcommand类的几个常用方法
cmd.ExecuteQuery()这样的用法不对
Top
13 楼lemong(風之影)回复于 2003-12-02 11:15:03 得分 0
此示例调用 SqlCommand 的 ExecuteNonQuery 方法以运行不返回任何数据的存储过程。相同的概念适用于其他 .NET Framework 数据提供程序。
示例
Dim backUpDB As SqlClient.SqlCommand
backUpDB = New SqlClient.SqlCommand
backUpDB.CommandType = CommandType.StoredProcedure
backUpDB.CommandText = "BackUpDBSproc"
backUpDB.Connection = SqlConnection1
SqlConnection1.Open()
backUpDB.ExecuteNonQuery()
SqlConnection1.Close()
编译代码
本示例需要:
对 System 和 System.Data 命名空间的引用。
名为 SqlConnection1 的数据连接。
SqlConnection1 连接到的数据源中名为 BackUpDBSproc 的存储过程(或者在代码中用有效的存储过程名替代该名称)。
Top
14 楼lemong(風之影)回复于 2003-12-02 11:15:59 得分 0
此示例将存储过程分配给 SqlCommand 对象,执行它,并且将其数据返回到 SqlDataReader。相同的概念适用于其他 .NET Framework 数据提供程序。
示例
Dim CustOrderHist As SqlClient.SqlCommand
CustOrderHist = New SqlClient.SqlCommand()
CustOrderHist.CommandType = CommandType.StoredProcedure
CustOrderHist.CommandText = "CustOrderHist"
CustOrderHist.Connection = SqlConnection1
Dim sparam As SqlClient.SqlParameter
sparam = New SqlClient.SqlParameter()
sparam.ParameterName = "@CustomerID"
sparam.SqlDbType = SqlDbType.NChar
CustOrderHist.Parameters.Add(sparam)
Dim Reader As SqlClient.SqlDataReader
CustOrderHist.Parameters("@CustomerID").Value = "ALFKI"
SqlConnection1.Open()
Reader = CustOrderHist.ExecuteReader()
' Insert code to read through the datareader.
SqlConnection1.Close()
编译代码
本示例需要:
对 System 和 System.Data 命名空间的引用。
名为 SqlConnection1 的数据连接。
SqlConnection1 连接到的数据源中名为 CustOrderHist 的存储过程。
该存储过程必须采用类型 Nchar 的名为 @CustomerID 的参数。
Top
15 楼sql2000(sql)回复于 2003-12-02 14:25:22 得分 0
晚上回家试度,现在头晕,谢谢楼上。明天把分加给你,不知道能不能把你加到小红星。Top




