建立存储过程:
可编程性===》存储过程===》新建存储过程:
删除一切没有用的注释,最后存储过程代码如下:
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
exec news_SelectById 2 //exec + 存储过程名 + 参数