Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Error con store procedure en visual.net

Estas en el tema de Error con store procedure en visual.net en el foro de SQL Server en Foros del Web. Hola espero que me ayuden soy nuevo en el foro y no sabia en donde colocar el tema asi que lo puse aqui tengo un ...
  #1 (permalink)  
Antiguo 15/09/2010, 07:49
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 13 años, 7 meses
Puntos: 0
Error con store procedure en visual.net

Hola

espero que me ayuden soy nuevo en el foro y no sabia en donde colocar el tema asi que lo puse aqui

tengo un servicio web en el que declaro un metodo y dentro de el, una funcion

la funcion se debe llamar a un store procedure que tiene un parametro de entrada y traerme ciertos datos, pero cuando invoco el store procedure me da el siguiente error

Procedure 'SP_CONTACTOS_OUT' expects parameter '@ID_CAMPANA', which was not supplied

Tengo mas de una semana intentando buscar la solucion y no encuentro la manera de que me corra bien, por favor si alguien sabe necesito ayuda!!!!!!


muchas gracias de antemano

este es el codigo de la funcion que se conecta al store procedure:

Código vb:
Ver original
  1. Public Function Prueba(ByVal nombre As String) As XmlDocument                        Dim conection As OdbcConnection = New OdbcConnection("dsn=IVR-Outbound;uid=******;pwd=******;")
  2. Dim DataAdapter As OdbcDataAdapter = New OdbcDataAdapter("SP_CONTACTOS_OUT", conection)            
  3. conection.Open()            
  4. DataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure                                  
  5. Dim parametro As OdbcParameter = DataAdapter.SelectCommand.Parameters.Add("@ID_CAMPANA", OdbcType.VarChar, 10)            
  6. parametro.Direction = ParameterDirection.Input            
  7. parametro.Value = "1"            
  8. DataAdapter.SelectCommand.Parameters.Add(parametro)                        
  9. Dim myReader As OdbcDataReader = DataAdapter.SelectCommand.ExecuteReader()                        
  10. myReader.Read()            
  11. Dim Suscrip As String = myReader.Item(0)                        
  12. conection.Close()                        
  13. Return Xml                
  14. End Function
  #2 (permalink)  
Antiguo 15/09/2010, 08:06
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Error con store procedure en visual.net

Intenta de esta forma:
Código vb:
Ver original
  1. DataAdapter.SelectCommand.Parameters.Add("@ID_CAMPANA", OdbcType.VarChar)
  2. DataAdapter.SelectCommand.Parameters("@ID_CAMPANA").Value = "1"
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 15/09/2010, 08:29
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Error con store procedure en visual.net

Hola flaviovich gracias por tu respuesta, lo hice de la forma como dijistes y el codigo me quedo asi:

Código vb:
Ver original
  1. Public Function Prueba(ByVal nombre As String) As XmlDocument
  2.            
  3.             Dim conection As OdbcConnection = New OdbcConnection("dsn=IVR-Outbound;uid=******;pwd=********;")
  4.  
  5.             Dim DataAdapter As OdbcDataAdapter = New OdbcDataAdapter("SP_CONTACTOS_OUT", conection)
  6.             conection.Open()
  7.             DataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure
  8.                        
  9.             DataAdapter.SelectCommand.Parameters.Add("@ID_CAMPANA", OdbcType.VarChar, 10)
  10.             DataAdapter.SelectCommand.Parameters("@ID_CAMPANA").Value = "1"
  11.             DataAdapter.SelectCommand.Parameters("@ID_CAMPANA").Direction = ParameterDirection.Input
  12.                
  13.             Dim myReader As OdbcDataReader = DataAdapter.SelectCommand.ExecuteReader()                        
  14.            
  15.            myReader.Read()            
  16.            
  17.             Dim Suscrip As String = myReader.Item(0)                        
  18.             conection.Close()                        
  19.             Return Xml
  20.             End Function

pero igual me sigue dando el mismo error

Última edición por Joel251; 15/09/2010 a las 08:39
  #4 (permalink)  
Antiguo 15/09/2010, 09:16
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Error con store procedure en visual.net

Parece que el error esta en la forma de devolver el valor, checa este link:
http://social.msdn.microsoft.com/for...a-c7f6af39b09f
Nos comentas como te fue.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 15/09/2010, 09:44
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Error con store procedure en visual.net

Bueno revise el link que me pasastes y en ese foro hablan que dentro del store procedure hay que definir el parametro de entrada como null para poder ejecutarlo sin problema.

El inconveniente es que la variable @ID_CAMPANA no puede tener valores null debido a que sino no funcionaria el store procedure, por eso le asignaba el valor "1" al parametro para que pudiera invocar al SP pero me sigue dando error.

De verdad no entiendo que pueda ser, ya he intentado invocarlo de varias formas y nada...
  #6 (permalink)  
Antiguo 15/09/2010, 10:11
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Error con store procedure en visual.net

Muestranos tu procedimiento.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #7 (permalink)  
Antiguo 15/09/2010, 10:20
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Error con store procedure en visual.net

Es este:

Código SQL:
Ver original
  1. CREATE             PROCEDURE [dbo].[Prueba]
  2.  
  3.  @ID_CAMPANA NVARCHAR (10)
  4.  
  5. AS
  6.  
  7. DECLARE @Habilitar_CDN nvarchar(10),
  8.      @Suscriptor NUMERIC (9),
  9.      @Fecha_Facturacion nvarchar (10),
  10.      @Fecha_Historico nvarchar (10),
  11.      @LAST DECIMAL (9,2) ,
  12.      @Metodo_de_pago nvarchar (50) ,
  13.      @Riesgo nvarchar (10) ,
  14.      @Numero_telefonico CHAR (10),
  15.     @Futuro_uso CHAR (10) ,
  16.     @Mensaje CHAR (50)
  17.  
  18. IF  EXISTS(  SELECT * FROM  [Table_Campana]   WHERE    ([Table_Campana].ID_CAMPANA  =  @ID_CAMPANA)   AND ( [Table_Campana].Habilitar_Campana  = 'SI' ))
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.     BEGIN
  26.      
  27.    -- SQL statements to update tables and process order.
  28. ----- Iniciamos Operacion con Cursor
  29. ------- declaramos las variables
  30.  
  31.  
  32.     DECLARE CURSOR_CONTACTO cursor FAST_FORWARD FOR
  33.  
  34.     SELECT     Table_Contactos.Suscriptor, Table_Contactos.Fecha_Facturacion, Table_Contactos.Fecha_Historico, Table_Contactos.[LAST],
  35.                       Table_Contactos.Metodo_de_Pago, Table_Contactos.Riesgo, Table_Contactos.Numero_telefonico, Table_Campana.Habilitar_CDN,
  36.                       Table_Contactos.Futuro_uso, Table_Campana.Mensaje,Table_Contactos.ID_Campana
  37.     FROM         Table_Campana INNER JOIN
  38.                       Table_Contactos ON Table_Campana.ID_Campana = Table_Contactos.ID_Campana AND Table_Contactos.ID_Campana= @ID_CAMPANA INNER JOIN
  39.                          Table_Eventos_Llamada ON Table_Contactos.Contador_Ocupado <
  40.                              (SELECT     [Maximo_numero_ Eventos]
  41.                                FROM          [Table_Eventos_llamada]
  42.                                WHERE      [Table_Eventos_llamada].ID_Evento = 1) AND Table_Contactos.Contador_Contestadora <
  43.                             (SELECT     [Maximo_numero_ Eventos]
  44.                              FROM          [Table_Eventos_llamada]
  45.                              WHERE      [Table_Eventos_llamada].ID_Evento = 4) AND Table_Contactos.Contador_No_responde <
  46.                               (SELECT     [Maximo_numero_ Eventos]
  47.                              FROM          [Table_Eventos_llamada]
  48.                              WHERE      [Table_Eventos_llamada].ID_Evento = 2) AND Table_Contactos.Contador_Respondio <
  49.                               (SELECT     [Maximo_numero_ Eventos]
  50.                              FROM          [Table_Eventos_llamada]
  51.                                WHERE      [Table_Eventos_llamada].ID_Evento = 3)
  52.         GROUP BY Table_Contactos.Suscriptor, Table_Contactos.Fecha_Facturacion, Table_Contactos.Fecha_Historico, Table_Contactos.[LAST],
  53.                           Table_Contactos.Metodo_de_Pago, Table_Contactos.Riesgo, Table_Contactos.Numero_telefonico, Table_Campana.Habilitar_CDN,
  54.                         Table_Contactos.Futuro_uso,Table_Campana.Mensaje ,Table_Contactos.ID_Campana, Table_Contactos.Estatus_Llamada
  55.     HAVING      (Table_Contactos.Estatus_Llamada =N'pendiente')
  56.  
  57.  
  58.  
  59.     OPEN CURSOR_CONTACTO
  60.          -- Avanzamos un registro y cargamos en las variables los valores encontrados en el primer registro
  61.  
  62.     FETCH NEXT FROM CURSOR_CONTACTO
  63.     INTO @Suscriptor,@Fecha_Facturacion,@Fecha_Historico,@LAST,@Metodo_de_pago,@Riesgo,@Numero_telefonico,@Habilitar_CDN,@Futuro_uso,@Mensaje, @ID_CAMPANA ----@Estatus_Llamada
  64.    
  65.  
  66.  
  67.     IF @@FETCH_STATUS = 0  AND (@Suscriptor <> 0 OR @Suscriptor <> NULL)
  68.  
  69.     BEGIN
  70.         BEGIN  TRANSACTION
  71.  
  72.     --Coloca el valor   'procesando'  en el campo [Table_Contactos].estatus_llamada para indicar  que el registro esta siendo usado para realizar una llamada
  73.  
  74.         UPDATE    [Table_Contactos]
  75.         SET            [Table_Contactos].estatus_llamada = 'procesando'  
  76.         WHERE     [Table_Contactos].estatus_llamada = 'pendiente' AND   Table_Contactos.Suscriptor  = @Suscriptor    COMMIT TRANSACTION
  77.  
  78.     END
  79.    
  80.  
  81.    
  82.      PRINT 1
  83.    
  84.  
  85.  
  86.     WHILE @@FETCH_STATUS = 0 AND @Suscriptor = 0
  87.     -----Actualizamos el registro obtenido en le campo Estatus_LLamada
  88.  
  89.    
  90.    
  91.  
  92.  
  93.  
  94.  
  95.  
  96.     -- cerramos el cursor
  97.             close  CURSOR_CONTACTO---CURSORITO
  98.       deallocate  CURSOR_CONTACTO----CURSORITO
  99.  
  100.  
  101.  
  102.  
  103.    
  104.    
  105. --  PRINT @Suscriptor
  106. --  PRINT @Fecha_Facturacion
  107. --  PRINT @Fecha_Historico
  108. --  PRINT @Last,@Metodo_de_pago
  109.     PRINT @Riesgo
  110.  
  111.        
  112. --  PRINT @Suscriptor
  113. --  PRINT @Fecha_Facturacion
  114.  -- PRINT @Fecha_Historico
  115. --  PRINT @Last
  116. --  PRINT @Metodo_de_pago
  117.  -- PRINT @Riesgo
  118. --  PRINT @Numero_telefonico
  119.    
  120.  
  121. --  PRINT @Habilitar_CDN
  122. --  PRINT @Futuro_uso
  123. --  PRINT @Numero_telefonico
  124. --  PRINT @Habilitar_CDN
  125. --  PRINT @Futuro_uso
  126.  -- PRINT @ID_CAMPANA
  127.  
  128. ---Se cambio este Select
  129. ------  SELECT @Suscriptor,@Fecha_Facturacion,@Fecha_Historico,@Last,@Metodo_de_pago,@Riesgo,@Numero_telefonico,@Habilitar_CDN,@Futuro_uso,@ID_CAMPANA
  130.  
  131. -----Este Select es de Telmo
  132. --  SELECT @Suscriptor AS Suscriptor,@Fecha_Facturacion  AS FechaFacturacion,@Fecha_Historico AS FechaHistorico,@Last AS MontoFacturado,@Metodo_de_pago AS MetodoDePago,@Riesgo AS Riesgo,@Numero_telefonico AS NumeroTelefonico,@Habilitar_CDN AS HabilitarCDN,@Futuro_uso AS FuturoUso,--@ID_CAMPANA AS HabilitarCampania,/ @Mensaje AS Mensaje ,@ID_CAMPANA AS CampaniaId
  133. ---SELECT @Suscriptor AS Suscriptor,@Fecha_Facturacion  AS FechaFacturacion,@Fecha_Historico AS FechaHistorico,@Last AS MontoFacturado,@Metodo_de_pago AS MetodoDePago,@Riesgo AS Riesgo,@Numero_telefonico AS NumeroTelefonico,@Habilitar_CDN AS HabilitarCDN,@Futuro_uso AS FuturoUso, @Mensaje AS Mensaje ,@ID_CAMPANA AS CampaniaId
  134.    
  135. SELECT ISNULL(@Suscriptor,0) AS Suscriptor, ISNULL(@Fecha_Facturacion,0)  AS FechaFacturacion, ISNULL(@Fecha_Historico,0) AS FechaHistorico, ISNULL(@LAST,0) AS MontoFacturado, ISNULL(@Metodo_de_pago,0) AS MetodoDePago, ISNULL(@Riesgo,0) AS Riesgo,@Numero_telefonico AS NumeroTelefonico,@Habilitar_CDN AS HabilitarCDN,@Futuro_uso AS FuturoUso, @Mensaje AS Mensaje ,1 AS CampaniaId
  136.    
  137.     RETURN
  138.  
  139.     SELECT @Suscriptor = 0
  140.    
  141.  
  142.  
  143.  
  144.     END
  145.  
  146.  ELSE
  147.  
  148. BEGIN  
  149.  
  150.  PRINT @ID_CAMPANA + 'no'
  151.  
  152.  
  153. ---Se cambio este Select
  154.  
  155. -----SELECT @Suscriptor,@Fecha_Facturacion,@Fecha_Historico,@Last,@Metodo_de_pago,@Riesgo,@Numero_telefonico,@Habilitar_CDN,@Futuro_uso,@ID_CAMPANA
  156.  
  157. -----Este Select es de Telmo
  158.     ---SELECT @Suscriptor AS Suscriptor,@Fecha_Facturacion  AS FechaFacturacion,@Fecha_Historico AS FechaHistorico,@Last AS MontoFacturado,@Metodo_de_pago AS MetodoDePago,@Riesgo AS Riesgo,@Numero_telefonico AS NumeroTelefonico,@Habilitar_CDN AS HabilitarCDN,@Futuro_uso AS FuturoUso,@ID_CAMPANA AS HabilitarCampania,---@Mensaje AS Mensaje ,@ID_CAMPANA AS CampaniaId
  159. ---SELECT @Suscriptor AS Suscriptor,@Fecha_Facturacion  AS FechaFacturacion,@Fecha_Historico AS FechaHistorico,@Last AS MontoFacturado,@Metodo_de_pago AS MetodoDePago,@Riesgo AS Riesgo,@Numero_telefonico AS NumeroTelefonico,@Habilitar_CDN AS HabilitarCDN,@Futuro_uso AS FuturoUso, @Mensaje AS Mensaje ,@ID_CAMPANA AS CampaniaId
  160.  
  161.  
  162. SELECT ISNULL(@Suscriptor,0) AS Suscriptor, ISNULL(@Fecha_Facturacion,0)  AS FechaFacturacion, ISNULL(@Fecha_Historico,0) AS FechaHistorico, ISNULL(@LAST,0) AS MontoFacturado, ISNULL(@Metodo_de_pago,0) AS MetodoDePago, ISNULL(@Riesgo,0) AS Riesgo,@Numero_telefonico AS NumeroTelefonico,@Habilitar_CDN AS HabilitarCDN,@Futuro_uso AS FuturoUso, @Mensaje AS Mensaje ,@ID_CAMPANA AS CampaniaId
  163.  
  164.  
  165.  
  166.  
  167.  
  168. END
  169.  
  170.  
  171. ---,@Fecha_Historico,@Last,@Metodo_de_pago,@Riesgo,@Numero_telefonico,@Habilitar_CDN,@Futuro_uso,@ID_CAMPANA
  172. GO
  #8 (permalink)  
Antiguo 15/09/2010, 10:48
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Error con store procedure en visual.net

Me parece que no estas haciendo un uso correcto de DataAdapter.
Mira este link:
http://bytes.com/topic/net/answers/5...dbcdataadapter
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #9 (permalink)  
Antiguo 15/09/2010, 12:30
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Error con store procedure en visual.net

Muchas gracias por tu tiempo. Lei las definiciones del link que me pasastes y decidi eliminar el DataAdapter y utilizar el OdbcCommand para invocar al SP.

Asi quedo mi codigo:

Código vb:
Ver original
  1. Public Function Prueba(ByVal nombre As String) As XmlDocument                        
  2.             Dim conection As OdbcConnection = New OdbcConnection("dsn=IVR-Outbound;uid=******;pwd=*******;")
  3.  
  4.             Dim Data As OdbcCommand = New OdbcCommand("SP_CONTACTOS_OUT", conection)
  5.             conection.Open()
  6.             Data.CommandType = CommandType.StoredProcedure
  7.                        
  8.             Data.Parameters.Add("@ID_CAMPANA", OdbcType.NVarChar)
  9.             Data.Parameters("@ID_CAMPANA").Value = "1"
  10.             Data.Parameters("@ID_CAMPANA").Direction = ParameterDirection.Input
  11.            
  12.             Dim myReader As OdbcDataReader = Data.ExecuteReader()myReader.Read()                                  
  13.             Dim Suscrip As String = myReader.Item(0)    
  14.             conection.Close()                                  
  15.             Return Xml            
  16. End Function

Sin embargo todavia me sigue dando el mismo error

Última edición por Joel251; 15/09/2010 a las 14:11
  #10 (permalink)  
Antiguo 15/09/2010, 14:13
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Error con store procedure en visual.net

Estimado, solo queda descartar que sea tu procedimiento.
Ejecutalo desde el Management Studio con el parametro respectivo.
Si funciona, quiere decir que es problema de tu codigo, y aca solo tratamos temas de base de datos, especificamente SQL Server.
Suerte!
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #11 (permalink)  
Antiguo 15/09/2010, 14:48
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Error con store procedure en visual.net

Bueno lo corri y me funciono bien, de verdad muchas gracias por tu tiempo y atencion.
Voy a poner el codigo en otra seccion del foro a ver que me pueden decir.

Gracias y saludos

Etiquetas: procedure, store
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:03.