mssql存储过程如何写更新一个字段的存储过程并返回值作为asp页面判断返回的值是什么情况。

举例说明:有一个数据库AA,表BB,表中分别是ID,NAME,SEX,AGE我从asp中传入一个参数(id),这个id进入存储过程后,根据这个id来更新数据库的某个字段(... 举例说明:有一个数据库AA,表BB,表中分别是ID ,NAME ,SEX ,AGE
我从asp中传入一个参数(id),这个id进入存储过程后,根据这个id来更新数据库的某个字段(name)。然后返回一个值(1-成功,2-有重名,3-没有这个id,4-未知错误)
请高手帮我写一下这个存储过程怎么写,而且如果出现错误的话,能实现回滚,防止数据库更新不同步了。同时能告诉我在asp中如何捕捉返回的值,怎么写。小弟在线等了,非常感谢能帮助我的人。谢谢。
展开
 我来答
liver1123
2011-04-09 · TA获得超过4637个赞
知道大有可为答主
回答量:2484
采纳率:100%
帮助的人:1762万
展开全部
存储过程如下:
CREATE procedure [dbo].[sp_name]
@a_id bigint,
@a_name varchar(30),
@a_sex varchar(1),
@a_age int,
@v_flag int output
AS
SET NOCOUNT ON
update BB set name = @a_name
where id = @a_id
IF (@@ERROR <> 0)
set @v_flag = @@ERROR -- 发生了错误
ELSE
set @v_flag = 0 -- 成功

1、在ASP脚本里需要检查过程的返回值,如果是 -1,表示更新数据失败, 0=成功。
2、由于更新的只是一个表的数据,所以无所谓回滚。只要操作失败,肯定没有更新到数据库;成功才会更新。
3、存储过程的执行需要五个参数,分别为id、name、sex、age、flag。前面四个是传入参数,最后一个是传出,脚本只需要检测flag的返回值即可。 其SQL语句类似:
exec sp_name id, 'name', 'sex', age, flag
注意由于name、sex都是char类型,所以需要用引号引起来。
更多追问追答
追问
@a_sex        varchar(1),
@a_age int,
这两个在存储过程中不用定义的吧,因为这两个没涉及到啊。
追答
在过程里面不使用的数据不用传递。我是考虑你给出了四个字段,在过程里恐怕不会只使用name这一个而写的。
jeans016
2011-04-09 · TA获得超过136个赞
知道答主
回答量:176
采纳率:0%
帮助的人:0
展开全部
同意一楼,ASP是不会自动更新的,也就是说,ASP触发事件中没有时间触发这一项在MSSQL添加作业,在每晚12点执行一个存储过程(一般的SQL也行),具体如下
追问
你回答的是我提问的问题么,怎么感觉是不是百度把题目给串了啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式