Funcion que ejecuta SP no funciona 2 veces en la misma pagina

daidahan
25 de Marzo del 2010
Hola a todos.
He creado una funcion en asp para ejecutar procedimientos almacenados, que recibe un string con el SP y sus parametros, abre la conexion de base de datos, ejecuta el SP, pasa el valor a un recordset que luego utiliza el metodo getrows() pasandole las tuplas a un array que es retornado por la funcion y finalmente mata los objetos de conexion. Ademas menciono que esta en un include.
en la primera ejecucion el SP hace un select y no hay problema, luego ejecuta otro SP que debiera hacer un insert, pero me da un error que dice "La operación no está permitida si el objeto está cerrado.", segun lo que yo creo al comienzo de la funcion abre la conexion y al final la cierra,
adjunto codigo:

function fnExecuteSP(sp)
'DECLARACION DE VARIABLES
dim conn
dim IPServer
dim DB
dim User
dim Pass
dim RS

'Crea objeto de conexion a base de datos
set conn=server.CreateObject("ADODB.Connection")

'Define IP de servidor de base de datos

IPServer = "127.0.0.1;"

'Define nombre de base de datos usuario y password

DB = "basedatos"
User="usuario"
Pass="password"

'Asigna cadena de conexion a objeto de conexion

conn.connectionString = "driver={sql server}; server="&IPServer&" database="&DB&";uid="&User&";password="&Pass&";"

'Si encuentra algun error continua la ejecucion y captura el error en variable err

on error resume next

'Abre conexion a la base de datos

conn.open()

if accion = "ins" then

conn.execute(sp)

else

'Ejecuta procedimiento almacenado obtenido del parametro
set RS = conn.execute(sp)

'Si existe algun registro obtiene las tuplas pasandolas a un array

if not RS.eof then

RSArray = RS.getrows()

end if

'Si hubo algun error lo captura y envia mensaje por pantalla

if err.number <> 0 then
response.write "<font size='4' color='#0000ff'>En estos momentos no existe comunicaci&oacute;n con el sistema."
response.write "<br>"
response.write "Por favor comuniquese con el administrador del sistema"
response.write "<br>"
response.write "Descripcion: " & err.description
response.end
conn.Close
end if

'Valor retornado por la funcion


fnExecuteSP = RSArray

end if

'Cerramos y matamos objetos de conexion y recordset utilizado

set RS = nothing
RS.Close()
conn.Close()

end function

y bueno en la otra pagina hago el llamado de la siguiente forma:

esta funciona sin problemas

arrVector = fnExecuteSP("sp_PORTAL_sel_usuarios '" & strRut & "'")


pero en la segunda llamada a la funcion no

fnExecuteSP (SP)