1.create procedure [dbo].[sysdb] as
2.declare @rs as table (name nvarchar(50))
3.insert into @rs select cast(name as varchar(50)) from sysdatabases
4.select * from @rs1.创建存储过程
2.定义表变量
3.向表变量插入值
4.查询表变量在执行该过程时存储过程虽然可以很好地反映@rs表值出来,SQL SERVER会返回两个消息:(5 行受影响)(5 行受影响)VB大多数编程语言都会收到两个结果集RECORDSET,很明显我们需要的是第二个结果集,而不是第一个空的结果集,虽然编程语言中也可以明确指定是第二个结果集(如:RS.NextRecordset),但是程序也有不便修改的时候.试问有什么办法,在第3句语句向临时表插入记录时,可不可以不使用INSERT INTO或不产生一个空的结果集?菩萨,救救我吧.
阿门.. .
 .

解决方案 »

  1.   

    为什么不直接用:
    create procedure [dbo].[sysdb] as 
    declare @rs as table (name nvarchar(50)) 
     select cast(name as varchar(50)) as name from sysdatabases 
      

  2.   

    create procedure [dbo].[sysdb] as 
     select cast(name as varchar(50)) as name from sysdatabases 
      

  3.   

    兄弟们呐,我刚才是举个例子嘛,有的时候表变量是一定要用的.比方说:declare @rs as table (col as nvarchar(50))
    insert into @rs select ...................................................
    ........................超长的SQL语句......................................
    ..........................................................................如果接下来的SQL语句还要调用"超长的SQL语句"就可以直接用@RS代替了.所有表变量有着不可替代的用处.select sum(col) from @rs
    union all
    select avg(col) from @rs
    union all
    select count(col) from @rs这就是表变量的优势
      

  4.   

    create procedure [dbo].[sysdb] as 
    SET NOCOUNT ON
    declare @rs as table (name nvarchar(50)) 
    insert into @rs select cast(name as varchar(50)) from sysdatabases 
    select * from @rs 
      

  5.   

    SET NOCOUNT ON......SET NOCOUNT OFF
      

  6.   

    1.create procedure [dbo].[sysdb] as
    2.declare @rs as table (name nvarchar(50))
    SET NOCOUNT ON
    3.insert into @rs select cast(name as varchar(50)) from sysdatabases
    SET NOCOUNT OFF
    4.select * from @rs 
      

  7.   

    MB,我就知道CSDN这个鬼地方,总会有些 这样 那样的牛人出现,总会在我不经意的时候,将我雷得两眼圆瞪,外焦里嫩.佩服佩服!
      

  8.   

    insert into @rs select...如果确实需要这样子使用的话,估计需要使用cursor代替.使用cursor fetech不会返回结果集.人不可能尽善尽美,能够原谅自己有不知道的,又何况他人呢?
      

  9.   

    在任何时候操作一个表都会产生一个受影响行数,不仅只是存储过程当中,包括触发器等等,所以在任何时候如果是不希望操作端看到操作结果,NOCOUNT是必要的,当然也包括我上面提到的cursor fetech.
      

  10.   

    要知道我可是从九六年学FOXBASE,九九年开始学习ACCESS和SQL SERVER数据库的,都十年了,十年来,我都不没听说过NOCOUNT,能不感动吗?
      

  11.   

    真不知道你是怎么学习的,至少将 SQL Server 帮助中的 tsqlref.chm 快速浏览一遍。
      

  12.   

    你的至少不等于别人的至少.有多少人会去对所有未使用到的东西进行浏览?Windows API你全浏览过了吗?
      

  13.   

    全部不敢说,曾经将 vbnet.mvps.org 下 API index 浏览一遍,至少可能会用到的功能留个印象。