如何编写返回记录集的存储过程

iamtotem 2004-04-30 02:08:59
存储过程中,需要多次执行Select语句,但是要返回的是最后一次的查询结果。
谢谢
...全文
52 4 点赞 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
kongshandong 2004-09-17
  • 打赏
  • 举报
回复
iamtotem 2004-04-30
写成下面这样,还是不行:
CREATE PROCEDURE dbo.UP_IO
@itype int=1,
@gid int,
@qua int=1

AS
create table #t
(
errno int,
errdesc varchar(100)
)

if @itype!=1 and @itype!=-1
begin
insert into #t values(1,'类型值错误')
end
else
begin
if @qua<=0
begin
insert into #t values(2,'数量值小于等于0')
end
else
begin
select * from t_goods where [id]= @gid
if @@ROWCOUNT>0
begin
BEGIN TRANSACTION
insert into t_inout values(@itype,@gid,@qua)
select * from t_stock where gid= @gid
if @@ROWCOUNT>0
update t_stock set quantity=quantity+@itype*@qua where gid=@gid
else
insert into t_stock(gid,quantity)values(@gid,@itype*@qua)

COMMIT TRANSACTION
insert into #t values(0,'处理完成')
end
else
BEGIN
insert into #t values(3,'商品不存在')
END
end
end

select errno,errdesc from #t
drop table #t
GO
返回的不是最后的那个。
  • 打赏
  • 举报
回复
iamtotem 2004-04-30
CREATE PROCEDURE dbo.UP_IO
@itype tinyint=1,
@gid int,
@qua int=1

AS
if @itype!=1 and @itype!=-1
begin
select 1,"类型值错误" --只能是 1 或 -1
return
end

if @qua<=0
begin
select 2,"数量值小于等于0"
return
end

select * from t_goods where [id]= @gid
if @@ROWCOUNT>0
begin
BEGIN TRANSACTION
insert into t_inout values(@itype,@gid,@qua)
end
else
BEGIN
select 3,"商品不存在"
return
END

select * from t_stock where gid= @gid
if @@ROWCOUNT>0
update t_stock set quantity=quantity+@itype*@qua where gid=@gid
else
insert into t_stock(gid,quantity)values(@gid,@itype*@qua)

COMMIT TRANSACTION
select 0,"处理完成"
return
GO
---------------------
最后要求返回下列之一:
select 0,"处理完成"
...
select 3,"商品不存在"
  • 打赏
  • 举报
回复
LoveSQL 2004-04-30
前面多次的select语句可以是赋值语句,这样并不影响返回最后一次的查询结果。。
  • 打赏
  • 举报
回复
相关推荐
发帖
疑难问题
加入

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2004-04-30 02:08
社区公告
暂无公告