建立存储过程:
可编程性===》存储过程===》新建存储过程:
删除一切没有用的注释,最后存储过程代码如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: 张奎伟
-- Create date: 2011-8-27
-- Description: 取出最新10条新闻(所属分类、新闻标题、发布时间)
-- =============================================
CREATE PROCEDURE procNewsSelectNewNews
AS
BEGIN
select top 10 n.id,n.title,n.createTime,c.[name] from news n
inner join category c on n.caId=c.id
order by n.createTime desc
END
GO
SQL里面执行存储过程:
在SQL里面执行一个已经定义好的存储过程,用exec+存储过程名
代码:
exec procNewsSelectNewNews
.NET里面执行存储过程:
写一个执行存储过程的函数:
public DataTable test(string procName)
{
DataTable dt = new DataTable();
cmd = new SqlCommand(procName, GetConn());
//比执行SQL语句就多了这句话,其他代码都一样
cmd.CommandType = CommandType.StoredProcedure;
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
//把查询出的数据加载到数据表中
dt.Load(sdr);
}
return dt;
}
前台调用:
protected void Page_Load(object sender, EventArgs e)
{
GridView1.DataSource = new SQLHelper().test("procNewsSelectNewNews");//传入在SQL中已经做好的存储过程名字即可。
GridView1.DataBind();
}
编写有参数的存储过程:
如:根据新闻ID取出该条新闻主体内容
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: keithray
-- Create date: 2011-8-27
-- Description:根据新闻ID取出该条新闻主体内容
-- =============================================
CREATE PROCEDURE news_SelectById
@id int
AS
BEGIN
select title,[content],createTime,caId from news where id=@id
END
GO
SQL执行:
exec news_SelectById 2 //exec + 存储过程名 + 参数