为什么使用@Table变量导致应用程序中出现Adodb问题?

Con*_*eak 0 sql t-sql sql-server adodb asp-classic

我有[MySp],一个存储过程.

所以检查一下..当我运行它时它工作:

 SELECT ID,Name FROM Table
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,我在应用程序端出现错误(Adodb)

 Declare @Table TABLE(ID int,Name varchar(10))

 --- Inserts into table variable ---
 INSERT INTO @Table
 SELECT ID,Name FROM Table

 --- Returns data from table variable ---
 SELECT ID,Name FROM @Table
Run Code Online (Sandbox Code Playgroud)

请记住,在SQL控制台中我得到[MySp]的相同结果,但在application/adodb代码中我得到错误.

ASP代码:

Set oRS = Server.CreateObject("Adodb.Recordset")
oRS.Open "[MySp]", Conn
If oRS.EOF Then...  <--Gives an error

 ADODB.Recordset error '800a0e78'
 Operation is not allowed when the object is closed. 
Run Code Online (Sandbox Code Playgroud)

有没有人知道为什么我在SQL中使用Table变量时会出现此错误?

Dam*_*ver 7

尝试SET NOCOUNT ON在存储过程的顶部添加.

我有一个模糊的回忆,ADO曾经因为插入/更新/删除返回的结果计数而感到困惑.

例如:

CREATE PROCEDURE MySP
AS

SET NOCOUNT ON

Declare @Table TABLE(ID int,Name varchar(10))

 --- Inserts into table variable ---
 INSERT INTO @Table
 SELECT ID,Name FROM Table

 --- Returns data from table variable ---
 SELECT ID,Name FROM @Table
Run Code Online (Sandbox Code Playgroud)