其实调用方式比较简单,主要也就是两种类型的存储过程:
1、更新类型的存储过程
2、查询类型的存储过程
下面就来看看具体的调用方式:1、更新类型的存储过程sp_InsertAccount:
![](https://i-blog.csdnimg.cn/blog_migrate/d4336c644d32c3a116498c3292cd53f2.gif)
CREATE PROCEDURE [dbo].[sp_InsertAccount]
![](https://i-blog.csdnimg.cn/blog_migrate/fd61c2b7b69340bd081e54930d79e3e5.gif)
-- Add the parameters for the stored procedure here
![](https://i-blog.csdnimg.cn/blog_migrate/9570ad7f8a842c5c7a90e57f3a4c68a2.gif)
@Account_ID int,
![](https://i-blog.csdnimg.cn/blog_migrate/2d5283c84cb9d0ed0ea29e9fe991d000.gif)
@Account_FirstName varchar(32),
![](https://i-blog.csdnimg.cn/blog_migrate/b3436bf7dd4edd5e16e7ae3bc2127b4e.gif)
@Account_LastName varchar(32)AS
![](https://i-blog.csdnimg.cn/blog_migrate/f7e81e9b96d17db11f9f169e552dad07.gif)
BEGIN
![](https://i-blog.csdnimg.cn/blog_migrate/4e758b80fc6f8259659e0825916f98dc.gif)
insert into accounts (account_id, account_firstname, account_lastname)
![](https://i-blog.csdnimg.cn/blog_migrate/ba52d7d5b65bc2bbdd0433337f337d79.gif)
values (@Account_ID,@Account_FirstName,@Account_LastName )
![](https://i-blog.csdnimg.cn/blog_migrate/daec0cd99d58bead3dd489d78d837630.gif)
END
Map配置文件:
![](https://i-blog.csdnimg.cn/blog_migrate/42e3ccda7405376d89e78049faea6ae6.gif)
<procedure id="InsertAccountViaStoreProcedure" parameterMap="insert-params_new">
![](https://i-blog.csdnimg.cn/blog_migrate/7a330914a04b4cddbddeefce721820cb.gif)
sp_InsertAccount
![](https://i-blog.csdnimg.cn/blog_migrate/06db4f406a0259ab9bd7e920d021baef.gif)
</procedure>
![](https://i-blog.csdnimg.cn/blog_migrate/2f6b502836cc6a0162bd7d5d5df2214d.gif)
<parameterMap id="insert-params_new" class="Account">
![](https://i-blog.csdnimg.cn/blog_migrate/9d8e0ce9d1b0794be6b90826ceaa7d42.gif)
<parameter property="Id" />
![](https://i-blog.csdnimg.cn/blog_migrate/3e60e409cdadfb63a59cce1c2a8dcdd0.gif)
<parameter property="FirstName" />
![](https://i-blog.csdnimg.cn/blog_migrate/b45cc6d5c44f1e22a4e9ab4c771e32fc.gif)
<parameter property="LastName" />
![](https://i-blog.csdnimg.cn/blog_migrate/abcca3c2c8a758aad3b262610d880c70.gif)
</parameterMap>
这里要注意的就是ParameterMap中的参数个数和顺序要和sp_InsertAccount存储过程中的一致
Ado中的调用代码:
![](https://i-blog.csdnimg.cn/blog_migrate/b75279bd8433f365b92025c5bf6a0948.gif)
public void InsertAccountViaStoreProcedure(Account account)
{
![](https://i-blog.csdnimg.cn/blog_migrate/cf710810a7e1083e4b8070bdb95372b5.gif)
try
{
![](https://i-blog.csdnimg.cn/blog_migrate/d4dfbf1aa6b2dfa6a4dafb85b8d5455f.gif)
sqlMap.Insert("InsertAccountViaStoreProcedure", account);
![](https://i-blog.csdnimg.cn/blog_migrate/91facb6a289f6ca8c913e8b952c34515.gif)
}
![](https://i-blog.csdnimg.cn/blog_migrate/364e45e26d2354a3c81c767307aea3a7.gif)
catch (DataAccessException ex)
{
![](https://i-blog.csdnimg.cn/blog_migrate/5bc16dda7310a56939a6bf9a0d6fcd6c.gif)
throw new DataAccessException("Error executing InsertAccountViaStoreProcedure. Cause :" + ex.Message, ex);
![](https://i-blog.csdnimg.cn/blog_migrate/516cfdc82b571a104202b16fbaebe0a5.gif)
}
![](https://i-blog.csdnimg.cn/blog_migrate/b3f6ed0cabd2d1d25d6aa5845ed6f602.gif)
}
这里使用的是sqlMap.Insert的方法,为了看起来直观一点,其实使用sqlMap.QueryForObject方法的话效果也是一样的:)2、查询类型的存储过程GetAccountByName:
![](https://i-blog.csdnimg.cn/blog_migrate/d49614765dd12cdc8bb6c2d7f07d9c89.gif)
CREATE PROCEDURE [dbo].[GetAccountByName]
![](https://i-blog.csdnimg.cn/blog_migrate/f77c87cf7598f3dd806086a0a9d94b9f.gif)
@name varchar(32)
![](https://i-blog.csdnimg.cn/blog_migrate/955a4ad13e1358ca3eb31bf8e36fb9cd.gif)
AS
![](https://i-blog.csdnimg.cn/blog_migrate/098a4fd5bed3b7cc3d4d296780d544a3.gif)
BEGIN
![](https://i-blog.csdnimg.cn/blog_migrate/79f53cec6374325f2a9ca6e640c0270b.gif)
select * from accounts where Account_FirstName like '%' + @name + '%'
![](https://i-blog.csdnimg.cn/blog_migrate/44b11c2de049958850e9366ccc798af0.gif)
END
Map配置文件:
![](https://i-blog.csdnimg.cn/blog_migrate/d60491183f88c6731544f603580ac4be.gif)
<procedure id="GetAccountByNameViaStoreProcedure" resultMap="account-result" parameterMap="selectpro-params">
![](https://i-blog.csdnimg.cn/blog_migrate/d68a576cc782a184246c9132ab72fb5e.gif)
GetAccountByName
![](https://i-blog.csdnimg.cn/blog_migrate/5b9ad9d66b37720972b27f9a72f4a9e3.gif)
</procedure>
![](https://i-blog.csdnimg.cn/blog_migrate/19ec14fc4996676c1428c062aedcf975.gif)
<parameterMap id="selectpro-params" class="string">
![](https://i-blog.csdnimg.cn/blog_migrate/9ed82a2fce971ddb8fdd52dcd189e39c.gif)
<parameter property="name"/>
![](https://i-blog.csdnimg.cn/blog_migrate/bd8bd4969a506986c3bfa3c76ba03f59.gif)
</parameterMap>
这里parameterMap也是和上面的要求一样,至于property的名字在这里没有实际作用,可以任意取名的
Ado中的调用代码:
![](https://i-blog.csdnimg.cn/blog_migrate/9e994da7f310076e30fea55328e2f2e1.gif)
public ArrayList GetAccountByNameViaStoreProcedure(string strName)
{
![](https://i-blog.csdnimg.cn/blog_migrate/5e1e9c26fae32cc861e1329ab0267d3c.gif)
try
{
![](https://i-blog.csdnimg.cn/blog_migrate/ecb7024ca03a46aff8ce45cb44d4f07b.gif)
ArrayList list = (ArrayList)sqlMap.QueryForList("GetAccountByNameViaStoreProcedure", strName);
![](https://i-blog.csdnimg.cn/blog_migrate/a069f71bd054052259a6cdb6761d67b2.gif)
return list;
![](https://i-blog.csdnimg.cn/blog_migrate/4eac0329432f660c77698554d910811c.gif)
}
![](https://i-blog.csdnimg.cn/blog_migrate/49272826ae6459daa0d71076a3dd0c20.gif)
catch (DataAccessException ex)
{
![](https://i-blog.csdnimg.cn/blog_migrate/9a4f2e660d78b450f7fbe1e84479dc8f.gif)
throw new DataAccessException("Error executing SqlAccountViaSqlMapDao.GetAccountById. Cause :" + ex.Message, ex);
![](https://i-blog.csdnimg.cn/blog_migrate/40be5937f0c3bd34318ccaf30b45c3c2.gif)
}
![](https://i-blog.csdnimg.cn/blog_migrate/38473cc4e7750bdf49cb15e07a0a25b4.gif)
}
http://www.cnblogs.com/firstyi/archive/2008/01/25/1053208.html