Gracias por tu interés, Myakire.
- Desde el analizador de consultas, los resultados son correctos (por eso sospecho que el fallo está en el código ASP).
- Sólo lo he probado en un servidor Windows con ASP y SQL Server (Express, por si nos puede ser útil) instalado.
- En principio sólo devolverá un registro, aunque no descarto la posibilidad de que en el futuro devuelva más. He probado con parámetros de salida y el resultado es el mismo: campos sin encriptar correctos, campos encriptados vacíos.
Aquí está el código de las funciones:
Código:
public sub CrearSP(byRef adocmd, nombreSP)
set adocmd = Server.CreateObject("ADODB.Command")
'Procedimiento Almacenado
adocmd.CommandText = nombreSP
adocmd.ActiveConnection = SGM_Conexion_x
adocmd.CommandType = adCmdStoredProc
'HayErrores()
end sub
public sub ParamIN(byRef sp, nombre, tipo, tam, valor)
On Error Resume Next
if tipo = adVarchar then valor = Left(valor, tam)
sp.Parameters.Append sp.CreateParameter(nombre, tipo, adParamInput, tam, valor)
if Err.Number <> 0 then
Response.Write "Error en parámetro: " & nombre
end if
On Error GoTo 0
end sub
public sub ParamOUT(byRef sp, nombre, tipo, tam)
sp.Parameters.Append sp.CreateParameter(nombre, tipo, adParamOutput, tam)
end sub
public sub EjecutarSP(byref RecSet, byRef sp)
On Error Resume Next
set RecSet = sp.Execute
if Err.Number <> 0 then
Response.Redirect "error.asp"
end if
end sub
No da ningún error, simplemente aparece el campo vacío.
He probado pasando como parámetros adWVarChar en lugar de adVarChar, porque el procedimiento almacenado para desencriptar utiliza el tipo nvarchar.
* Nota: También he probado ejecutando la SQL que llama al procedimiento almacenado directamente, la misma que genera el analizador de consultas, y el resultado es el mismo: vacío.
Muchas gracias por tu colaboración.