Problemas al llamar un Procedimiento SQL

17/04/2007 - 16:58 por Mercedes | Informe spam
Buenos Dias
Cree un Procedimiento Almacenado en SQL 2000 el cual quedo de la siguiente
manera:
CREATE PROCEDURE sp_TblTmpDTEMER
AS
CREATE TABLE #DTEMER_TMP1 ([ORIDES] varchar (7) NULL, [REGI] varchar (30)
NULL, [MARC] varchar (30) NULL )
INSERT INTO #DTEMER_TMP1 (ORIDES) VALUES ('PUP')
INSERT INTO #DTEMER_TMP1 (ORIDES) VALUES ('OAO')
SELECT ORIDES FROM #DTEMER_TMP1
GO

Lo intento llamar de la siguiente manera desde una página ASP, pero se queda
leyendo y nunca muestra le lectura completa de la página. Si quito la parte
del Do, no manda error, pero logicamente no muestra nada ¿Que puedo hacer?

<% Set ConexionBD = Server.CreateObject("ADOdb.Connection")
Set Registro = Server.CreateObject("ADOdb.Recordset")
ConexionBD.Open "Provider=SQLOLEDB;Data Source8.1.2.1;Initial
Catalog=SIG;Persist Security Info=False;User ID=xxx;PWD=iii"
sql="execute dbo.sp_TblTmpDTEMER"
Set Registro = ConexionBD.Execute(sql)
Do While Not Registro.EOF
Response.Write Registro(0)
Registro.MoveNext
Loop
Registro.Close %>

Nota: Tengo Windows2003 , SQL2000 e IIS6.0

Muchas Gracias

Preguntas similare

Leer las respuestas

#1 Manuel Vera
17/04/2007 - 18:17 | Informe spam
Ya probaste que el procedimiento se ejecuta bien en el QueryAnalyzer?

MV

"Mercedes" escribió en el mensaje
news:
Buenos Dias
Cree un Procedimiento Almacenado en SQL 2000 el cual quedo de la siguiente
manera:
CREATE PROCEDURE sp_TblTmpDTEMER
AS
CREATE TABLE #DTEMER_TMP1 (


[ORIDES] varchar (7) NULL,
[REGI] varchar (30) NULL,
[MARC] varchar (30) NULL )
INSERT INTO #DTEMER_TMP1 (ORIDES) VALUES ('PUP')
INSERT INTO #DTEMER_TMP1 (ORIDES) VALUES ('OAO')
SELECT ORIDES FROM #DTEMER_TMP1
GO

Lo intento llamar de la siguiente manera desde una página ASP, pero se
queda
leyendo y nunca muestra le lectura completa de la página. Si quito la
parte
del Do, no manda error, pero logicamente no muestra nada ¿Que puedo hacer?

<% Set ConexionBD = Server.CreateObject("ADOdb.Connection")
Set Registro = Server.CreateObject("ADOdb.Recordset")
ConexionBD.Open "Provider=SQLOLEDB;Data Source8.1.2.1;Initial
Catalog=SIG;Persist Security Info=False;User ID=xxx;PWD=iii"
sql="execute dbo.sp_TblTmpDTEMER"
Set Registro = ConexionBD.Execute(sql)
Do While Not Registro.EOF
Response.Write Registro(0)
Registro.MoveNext
Loop
Registro.Close %>

Nota: Tengo Windows2003 , SQL2000 e IIS6.0

Muchas Gracias

Respuesta Responder a este mensaje
#2 Mercedes
17/04/2007 - 18:42 | Informe spam
Si y me da como resultado los 2 registros que inserto.
Probé con el siguiente código y así si me los dá; pero el problema ahora es
cuando tengo el mismo procedimiento pero con tablas temporales

Codigo___________________________________________
<% set ocon= server.createobject("ADODB.Connection")
Set ocmd = Server.CreateObject("ADODB.command")
Conexion="Provider=SQLOLEDB.1...
ocon.open Conexion
set ocmd.Activeconnection=ocon
on error resume next
ocmd.commandText="sp_TblTmpDTEMER"
ocmd.commandtype = 4

set rs= ocmd.execute
i=0
if err.number =0 then
on error goto 0
Do until rs.eof
response.write "" & rs(0) & "<br>"
rs.movenext
loop
else
response.write "no he podido abrir el recordset " & err.number & "-" &
err.description
end if
rs.close %>

Procedimiento con Tablas temporales_____________________
CREATE PROCEDURE sp_TblTmpDTEMER
AS
CREATE TABLE #DTEMER_TMP1 (
[ORIDES] varchar (7) NULL,
[REGI] varchar (30) NULL,
[MARC] varchar (30) NULL )
INSERT INTO #DTEMER_TMP1 (ORIDES) VALUES ('PUP')
INSERT INTO #DTEMER_TMP1 (ORIDES) VALUES ('OAO')
SELECT ORIDES FROM #DTEMER_TMP1
GO

Error____________________________________________
ADODB.Recordset (0x800A0E78)
La operación no está permitida si el objeto está cerrado

Gracias

"Manuel Vera" wrote:

Ya probaste que el procedimiento se ejecuta bien en el QueryAnalyzer?

MV

"Mercedes" escribió en el mensaje
news:
> Buenos Dias
> Cree un Procedimiento Almacenado en SQL 2000 el cual quedo de la siguiente
> manera:
> CREATE PROCEDURE sp_TblTmpDTEMER
> AS
> CREATE TABLE #DTEMER_TMP1 (
[ORIDES] varchar (7) NULL,
[REGI] varchar (30) NULL,
[MARC] varchar (30) NULL )
> INSERT INTO #DTEMER_TMP1 (ORIDES) VALUES ('PUP')
> INSERT INTO #DTEMER_TMP1 (ORIDES) VALUES ('OAO')
> SELECT ORIDES FROM #DTEMER_TMP1
> GO
>
> Lo intento llamar de la siguiente manera desde una página ASP, pero se
> queda
> leyendo y nunca muestra le lectura completa de la página. Si quito la
> parte
> del Do, no manda error, pero logicamente no muestra nada ¿Que puedo hacer?
>
> <% Set ConexionBD = Server.CreateObject("ADOdb.Connection")
> Set Registro = Server.CreateObject("ADOdb.Recordset")
> ConexionBD.Open "Provider=SQLOLEDB;Data Source8.1.2.1;Initial
> Catalog=SIG;Persist Security Info=False;User ID=xxx;PWD=iii"
> sql="execute dbo.sp_TblTmpDTEMER"
> Set Registro = ConexionBD.Execute(sql)
> Do While Not Registro.EOF
> Response.Write Registro(0)
> Registro.MoveNext
> Loop
> Registro.Close %>
>
> Nota: Tengo Windows2003 , SQL2000 e IIS6.0
>
> Muchas Gracias
>



Respuesta Responder a este mensaje
#3 Manuel Vera
17/04/2007 - 19:53 | Informe spam
Prueba con estas ocurrencias a ver...

1.- Quita del string de conexion lo siguiente:
Persist Security Info=False

2.- Quita el ON ERROR RESUME NEXT para ver si hay error en la ejecucion del
SP.

3.- No tiene que ver con tu problema, pero... El nombre que le estas dando a
tu SP no es recomendable. Los SP con prefijo "sp_" están reservados para el
SQL Server, en el sentido que primero son buscados en la base de datos
master (algo asi) y al no encontrarlos es que busca en tu base de datos.
Esto le resta rendimiento a tu aplicación. Quitale el caracter subyarado
"_".

4.- ¿revisaste los permisos de ejecucion de SP en tu base de datos? ¿Tu
usuario web tiene permisos para ejecutar SP?

Salu2
MV


"Mercedes" escribió en el mensaje
news:
Si y me da como resultado los 2 registros que inserto.
Probé con el siguiente código y así si me los dá; pero el problema ahora
es
cuando tengo el mismo procedimiento pero con tablas temporales

Codigo___________________________________________
<% set ocon= server.createobject("ADODB.Connection")
Set ocmd = Server.CreateObject("ADODB.command")
Conexion="Provider=SQLOLEDB.1...
ocon.open Conexion
set ocmd.Activeconnection=ocon
on error resume next
ocmd.commandText="sp_TblTmpDTEMER"
ocmd.commandtype = 4

set rs= ocmd.execute
i=0
if err.number =0 then
on error goto 0
Do until rs.eof
response.write "" & rs(0) & "<br>"
rs.movenext
loop
else
response.write "no he podido abrir el recordset " & err.number & "-" &
err.description
end if
rs.close %>

Procedimiento con Tablas temporales_____________________
CREATE PROCEDURE sp_TblTmpDTEMER
AS
CREATE TABLE #DTEMER_TMP1 (
[ORIDES] varchar (7) NULL,
[REGI] varchar (30) NULL,
[MARC] varchar (30) NULL )
INSERT INTO #DTEMER_TMP1 (ORIDES) VALUES ('PUP')
INSERT INTO #DTEMER_TMP1 (ORIDES) VALUES ('OAO')
SELECT ORIDES FROM #DTEMER_TMP1
GO

Error____________________________________________
ADODB.Recordset (0x800A0E78)
La operación no está permitida si el objeto está cerrado

Gracias

"Manuel Vera" wrote:

Ya probaste que el procedimiento se ejecuta bien en el QueryAnalyzer?

MV

"Mercedes" escribió en el mensaje
news:
> Buenos Dias
> Cree un Procedimiento Almacenado en SQL 2000 el cual quedo de la
> siguiente
> manera:
> CREATE PROCEDURE sp_TblTmpDTEMER
> AS
> CREATE TABLE #DTEMER_TMP1 (
[ORIDES] varchar (7) NULL,
[REGI] varchar (30) NULL,
[MARC] varchar (30) NULL )
> INSERT INTO #DTEMER_TMP1 (ORIDES) VALUES ('PUP')
> INSERT INTO #DTEMER_TMP1 (ORIDES) VALUES ('OAO')
> SELECT ORIDES FROM #DTEMER_TMP1
> GO
>
> Lo intento llamar de la siguiente manera desde una página ASP, pero se
> queda
> leyendo y nunca muestra le lectura completa de la página. Si quito la
> parte
> del Do, no manda error, pero logicamente no muestra nada ¿Que puedo
> hacer?
>
> <% Set ConexionBD = Server.CreateObject("ADOdb.Connection")
> Set Registro = Server.CreateObject("ADOdb.Recordset")
> ConexionBD.Open "Provider=SQLOLEDB;Data Source8.1.2.1;Initial
> Catalog=SIG;Persist Security Info=False;User ID=xxx;PWD=iii"
> sql="execute dbo.sp_TblTmpDTEMER"
> Set Registro = ConexionBD.Execute(sql)
> Do While Not Registro.EOF
> Response.Write Registro(0)
> Registro.MoveNext
> Loop
> Registro.Close %>
>
> Nota: Tengo Windows2003 , SQL2000 e IIS6.0
>
> Muchas Gracias
>



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