Problema para obtener un recordset desde un sp con tabla temporal

08/03/2006 - 19:10 por CHAR72 | Informe spam
Pues que me estoy volviendo mono !!!!

Tengo el siguiente sp:

Create procedure sp_prueba as
CREATE TABLE #X
(X VARCHAR(10))

INSERT INTO #X (X) VALUES ('XX')

SELECT * FROM #X

Luego intento desde ASP o VB6 lo siguiente:

Dim cn As New Connection, rst As New Recordset

cn.open "Provider=SQLOLEDB.1;Password=;Persist Security Info=True;User
ID=sa;Initial Catalog=PRUEBA;Data Source=PC01"
rst.open "sp_prueba",cn
if rst.eof then ..y me da el error que "la operacion no esta permitida
si el objeto esta cerrado"
end if


si modifico el sp por:

ALTER procedure sp_prueba as
select x='xx'

funciona perfecto, evidentemente es un problema con las tablas temporales,
pero como se resuelve ?


Saludos

Preguntas similare

Leer las respuestas

#1 CHAR72
08/03/2006 - 23:00 | Informe spam
Me respondo a mi mismo:

SET NOCOUNT ON

"CHAR72" <char72[nos pa m]@gmail.com> escribió en el mensaje
news:
Pues que me estoy volviendo mono !!!!

Tengo el siguiente sp:

Create procedure sp_prueba as
CREATE TABLE #X
(X VARCHAR(10))

INSERT INTO #X (X) VALUES ('XX')

SELECT * FROM #X

Luego intento desde ASP o VB6 lo siguiente:

Dim cn As New Connection, rst As New Recordset

cn.open "Provider=SQLOLEDB.1;Password=;Persist Security Info=True;User
ID=sa;Initial Catalog=PRUEBA;Data Source=PC01"
rst.open "sp_prueba",cn
if rst.eof then ..y me da el error que "la operacion no esta
permitida si el objeto esta cerrado"
end if


si modifico el sp por:

ALTER procedure sp_prueba as
select x='xx'

funciona perfecto, evidentemente es un problema con las tablas temporales,
pero como se resuelve ?


Saludos



Respuesta Responder a este mensaje
#2 jcac
08/03/2006 - 23:11 | Informe spam
Creo que tu problema esta en el conexion que haces haber prueba con esta:

"Server=" & gcServidor & ";Uid=" & gcUsuario & ";Pwd=" & gcPassUsuario &
";Database=" & baseDatos & ";driver={SQL Server}"

Saludos

"CHAR72" <char72[nos pa m]@gmail.com> escribió en el mensaje
news:
Pues que me estoy volviendo mono !!!!

Tengo el siguiente sp:

Create procedure sp_prueba as
CREATE TABLE #X
(X VARCHAR(10))

INSERT INTO #X (X) VALUES ('XX')

SELECT * FROM #X

Luego intento desde ASP o VB6 lo siguiente:

Dim cn As New Connection, rst As New Recordset

cn.open "Provider=SQLOLEDB.1;Password=;Persist Security Info=True;User
ID=sa;Initial Catalog=PRUEBA;Data Source=PC01"
rst.open "sp_prueba",cn
if rst.eof then ..y me da el error que "la operacion no esta
permitida si el objeto esta cerrado"
end if


si modifico el sp por:

ALTER procedure sp_prueba as
select x='xx'

funciona perfecto, evidentemente es un problema con las tablas temporales,
pero como se resuelve ?


Saludos



Respuesta Responder a este mensaje
#3 ulises
09/03/2006 - 00:41 | Informe spam
Tienes varias sentencias en tu procedimiento almacenado y por cada una de
ellas te devuelve un resultado, en este caso al intentar realizar el
rst.eof el recordset contiene el resultado del INSERT, prueba colocando SET
NOCOUNT ON al inicio para que esos resultados no se envien.

Saludos,
Ulises

CHAR72 wrote:

Pues que me estoy volviendo mono !!!!

Tengo el siguiente sp:

Create procedure sp_prueba as
CREATE TABLE #X
(X VARCHAR(10))

INSERT INTO #X (X) VALUES ('XX')

SELECT * FROM #X

Luego intento desde ASP o VB6 lo siguiente:

Dim cn As New Connection, rst As New Recordset

cn.open "Provider=SQLOLEDB.1;Password=;Persist Security Info=True;User
ID=sa;Initial Catalog=PRUEBA;Data Source=PC01"
rst.open "sp_prueba",cn
if rst.eof then ..y me da el error que "la operacion no esta
permitida si el objeto esta cerrado"
end if


si modifico el sp por:

ALTER procedure sp_prueba as
select x='xx'

funciona perfecto, evidentemente es un problema con las tablas temporales,
pero como se resuelve ?


Saludos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida