Pregunta: | 37687 - COMO RECUPERAR UNA VARIABLE DE SALIDA DESDE UN PROCEDIMIENTO |
Autor: | Juan Pablo San Martín |
Estimados: mi problema es que cuando ejecuto un procedimiento almacenado el cual devuelve un parametro de salida...no lo puedo recuperar en Visual...como puedo hacer esto?...si me pueden mandar un ejemplillo sería genial.
pdta: mi conexion a SQL server la hago con ADO. |
Respuesta: | Luis Bueno |
ok.. un proced almac devuelve datos en un recordset pero lo q tu necesitas es el valor de un para de salida del store. entonces ahi te va creo q es comprendible desde cualquier punto de vista
Public Function ValidaUsuario(psUsuario As String, psNombres As String, piActivo As Integer) As Integer Dim oCmd As ADODB.Command Dim oPrm As ADODB.Parameter Dim msValor As String Set oCmd = New ADODB.Command With oCmd .CommandTimeout = 0 .CommandType = adCmdStoredProc .CommandText = "sp_ValidaUsuario" .ActiveConnection = BDSqlServer Set oPrm = oCmd.CreateParameter("pUsuario", adVarChar, adParamInput, 15, psUsuario) oCmd.Parameters.Append oPrm Set oPrm = oCmd.CreateParameter("pNombres", adVarChar, adParamInput, 30, psNombres) oCmd.Parameters.Append oPrm Set oPrm = oCmd.CreateParameter("pActivo", adInteger, adParamInput, 4, piActivo) oCmd.Parameters.Append oPrm Set oPrm = oCmd.CreateParameter("pExiste", adInteger, adParamOutput) oCmd.Parameters.Append oPrm .Prepared = True .Execute If IsNull(.Parameters("pExiste")) Then ValidaUsuario = 0 Else ValidaUsuario = .Parameters("pExiste") End If End With Set oCmd = Nothing End Function ''El Store CREATE PROCEDURE sp_ValidaUsuario @pUsuario varchar(15), @pNombres varchar(30), @pActivo int, @pExiste int OUTPUT AS SET NOCOUNT ON IF NOT EXISTS(SELECT * FROM ACCESO_SISTEMA WHERE USUARIO IN (SELECT USUARIO WHERE USUARIO=@pUsuario )) INSERT INTO ACCESO_SISTEMA (USUARIO,CLAVE,NOMBRES,ACTIVO) VALUES(@pUsuario,@pUsuario,@pNombres,@pActivo) RETURN 0 GO Espero te ayude hasta pronto.. bye |
Respuesta: | Gabriel Plana Gavaldà |
Creo que lo que buscas viene en la ayuda de Visual Basic.
Este es un ejemplo de como ejecutar el procedimiento almacenado sp_who, el cual devuelve un parámetro. Los parámetros de salida son recogidos por el recordset que devuelve el método Execute del objeto ADO Command. Espero haberte ayudado. Tengo una documentación sobre ASP publicada en esta web. Si te interesa el tema de ASP te agradecería que la miraras y hicieras algún comentario. Dim cn As New ADODB.Connection Dim cmd As New ADODB.Command Dim rs As New ADODB.Recordset cn.Provider = "sqloledb" cn.Properties("Data Source").Value = "MyServerName" cn.Properties("Initial Catalog").Value = "pubs" cn.Properties("Integrated Security").Value = "SSPI" cn.Open Cmd.ActiveConnection = cn Cmd.CommandText = "sp_who" Cmd.CommandType = adCmdStoredProc Set rs = Cmd.Execute Debug.Print rs(0) rs.Close |