table变量 存储过程返回数据

lkh42002 2007-05-23 03:58:19
CREATE PROCEDURE sp_getAllMT
AS
declare @tbl table(
mtid int,
mtname varchar(50),
orderid int
)
insert into @tbl values(0,'供应',0)
insert into @tbl select mtid,mtname,orderid from tbl_messagetype where mtid<50 order by orderid asc
insert into @tbl values(0,'求购',50)
insert into @tbl select mtid,mtname,orderid from tbl_messagetype where mtid>50 order by orderid asc
select * from @tbl
GO
--------------------------------------------------------------------
CREATE PROCEDURE sp_getAllMT
AS
select mtid,mtname,orderid from tbl_messagetype order by orderid asc
GO
----------------------------------------------------------------------
上面的两个存储过程返回的结果有什么不同?
我在程序中用set rs = conn.execute("sp_getAllMT")用第二个是正确的,第一个错误,提示"对象关闭时,不允许操作。",在查询分析器中两个存储过程都可以执行,返回预期的结果
...全文
191 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lkh42002 2007-05-23
  • 打赏
  • 举报
回复
原来是这样,多谢!
hellowork 2007-05-23
  • 打赏
  • 举报
回复
第二个也有回显,但是该回显是在返回的结果中的第二个结果集中,而查询的记录在第一个结果集中,所以该回显不会影响读取结果集.
第一个存储过程中的在查询之前就因为有insert操作而产生回显了,所以第一个结果集不是想要的.
lkh42002 2007-05-23
  • 打赏
  • 举报
回复
不错,可以了,谢谢。

第二个默认没有回显吗?也有返回受影响的行数呀
hellowork 2007-05-23
  • 打赏
  • 举报
回复
在第一个存储过程的定义的第一行加入set nocount on,以禁止回显:
CREATE PROCEDURE sp_getAllMT
AS
SET NOCOUNT ON /*加上此行*/
delcare ...

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧