Foros del Web » Programando para Internet » ASP Clásico »

ejecutar Store Procedure con parametros

Estas en el tema de ejecutar Store Procedure con parametros en el foro de ASP Clásico en Foros del Web. Hola gente, espero que por favor me puedan ayudar con la siguiente duda: La idea seria ejecutar un SP enviandole parametros. Dichos parametros los obtengo ...
  #1 (permalink)  
Antiguo 06/05/2005, 06:54
Avatar de kotayk  
Fecha de Ingreso: marzo-2005
Mensajes: 35
Antigüedad: 19 años, 1 mes
Puntos: 0
ejecutar Store Procedure con parametros

Hola gente, espero que por favor me puedan ayudar con la siguiente duda:
La idea seria ejecutar un SP enviandole parametros. Dichos parametros los obtengo asi:
user = Request.form("usuario")
pass = Request.form("pswd")
Luego llamo al SP:
RS.Open "EXEC BuscarUsuario '@" & user & " ' , ' @ " & pass & " ' ", oConn (como para devolver el resultado en un recordset). Al menos en esta parte, el armado de la cadena esta bien, no tira ningun error.

Y el SP es como el que sigue:
CREATE PROCEDURE BuscarUsuario (@web_user varchar, @web_pswd varchar) AS

SELECT * FROM user_acpb WHERE usuario=@web_user and clave=@web_pswd
GO

Alguna idea de que puede estar pasando ???? Gracias
  #2 (permalink)  
Antiguo 06/05/2005, 09:33
 
Fecha de Ingreso: septiembre-2004
Ubicación: Earth world
Mensajes: 2
Antigüedad: 19 años, 7 meses
Puntos: 0
Pequeño error

Hola...
mira no es necesario que agregues la @ a las variables que envías...

RS.Open "EXEC BuscarUsuario '" & user & " ' , ' " & pass & " ' ", oConn
prueba así...!!!!

  #3 (permalink)  
Antiguo 06/05/2005, 10:33
Avatar de kotayk  
Fecha de Ingreso: marzo-2005
Mensajes: 35
Antigüedad: 19 años, 1 mes
Puntos: 0
Gracias por tu respuesta pero No anduvo amigo
  #4 (permalink)  
Antiguo 06/05/2005, 10:35
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 3 meses
Puntos: 98
Y qué error te envía?
Si corres el stored desde el analyzer, si funciona correctamente?
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 06/05/2005, 10:38
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
Hola

Correlo asi:

set rs = oConn.Execute("EXEC BuscarUsuario '" & user & " ' , ' " & pass & " ' ")

bueno, la sintaxis la revisas tu, pero correlo asi.

Suerte!!

Anexo:

Fijate que le hayas puesto permisos de EXEC al procedure cuando lo creaste para el usuario con el cual estas creando la conexion a la base de datos oConn
  #6 (permalink)  
Antiguo 06/05/2005, 11:36
Avatar de kotayk  
Fecha de Ingreso: marzo-2005
Mensajes: 35
Antigüedad: 19 años, 1 mes
Puntos: 0
Desde el analizer tampoco me funciona. Probe de estas maneras por las dudas y nada:
EXEC BuscarUsuario "@guest","@guest"

EXEC BuscarUsuario '@guest,'@guest'

EXEC BuscarUsuario 'guest','guest'

EXEC BuscarUsuario guest,guest

Ahora voy a chequear lo de los permisos
  #7 (permalink)  
Antiguo 06/05/2005, 11:40
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 3 meses
Puntos: 98
Si no te funciona en el analyzer, es que tu stored procedure, está mal...revísalo y haz que funcione primero desde allí y luego te peleas con el ASP

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #8 (permalink)  
Antiguo 06/05/2005, 12:00
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
Humm

En el analizer que error te marca, mira, para poder correr lo que quieres necesitas esto en el analizer:

declare @var varchar(500)
declare @var2 varchar(500)
select @var = 'X'
select @var2 = 'Y'
EXEC BuscarUsuario @var, @var2

Luego dinos que error te marco..
  #9 (permalink)  
Antiguo 06/05/2005, 12:20
Avatar de kotayk  
Fecha de Ingreso: marzo-2005
Mensajes: 35
Antigüedad: 19 años, 1 mes
Puntos: 0
Bueno ya hice andar el analyzer.
Ahora tengo el problema de ASP. Estoy probando de 2 maneras que son las siguientes:

Manera 1:
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Driver={SQL Server};server=BCSM_PBCLI;Database=Web;uid=v904720 ;pwd=mariapaola"
Set cmd = Server.CreateObject ("ADODB.Command")
Set cmd.ActiveConnection = oConn
cmd.CommandText = "BuscarUsuario"
cmd.CommandType = adCmdStoredProc
cmd.Parameters.Append cmd.CreateParameter("web_user",adVarChar,adParamIn put,50)
cmd.Parameters.Append cmd.CreateParameter("web_pswd",adVarChar,adParamIn put,100)
cmd("web_user")=user ---> user lo recibo del form
cmd("web_pswd")=pass ---> user lo recibo del form

Manera 2:
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Driver={SQL Server};server=BCSM_PBCLI;Database=Web;uid=v904720 ;pwd=mariapaola"
Set cmd = Server.CreateObject ("ADODB.Command")
Set cmd.ActiveConnection = oConn
cmd.CommandText = "BuscarUsuario"
cmd.CommandType = adCmdStoredProc
cmd.Parameters.Refresh
cmd.Parameters(0)=user
cmd.Parameters(1)=pass

El ERROR es el siguiente:
ADODB.Command error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
  #10 (permalink)  
Antiguo 06/05/2005, 12:26
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
Hola

Usa esto exactamente...

Haz esto primero:

sql = "BuscarUsuario '" & user & "', '" & pass & "'")

Response.write sql 'Luego correloe n el analizer tal como esta para probar.

set rs = oConn.Execute(sql)

Que error te arroja si haces eso en el ASP

Revisaste los persmisos ?
  #11 (permalink)  
Antiguo 06/05/2005, 12:36
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 3 meses
Puntos: 98
O utiliza la parametrización para especificar el tipo de dato, a mi me suena mas como que por ahí anda el error:

Set param = cmd.CreateParameter("calendar_type_id", adInteger, adParamInput, 4, Calendar_type_id)
cmd.Parameters.Append(param)

Fijate en pasarle el tipo de dato y el tamaño correcto a tu SP

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #12 (permalink)  
Antiguo 06/05/2005, 13:00
Avatar de kotayk  
Fecha de Ingreso: marzo-2005
Mensajes: 35
Antigüedad: 19 años, 1 mes
Puntos: 0
Me anduvo de esa manera !!!. Lo que me extraña es que es lo mismo que me habias propuesto antes solo que reemplazando sql con la cadena en si dentro del execute. Y antes no anduvo.
El tema es que ahora al encontrar ese usuario corro otro SP para actualizar su contraseña.
lo hago igual que me lo indicaste Neuron_376:
slq2 = "ActualizarPassword '" & user & "','" & new_pass & "'"
oConn.Execute (sql2)

y da el siguiente error:

Microsoft OLE DB Provider for ODBC Drivers error '80040e0c'

Command text was not set for the command object.
  #13 (permalink)  
Antiguo 06/05/2005, 13:08
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 3 meses
Puntos: 98
cmd.CommandText = algun_command_text

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #14 (permalink)  
Antiguo 06/05/2005, 13:19
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
Bien..

La diferencia es que a la consulta antes le estabas poniendo EXEC, yo lo puse tambien en mi comentario antes, y me fije que estaba mal...

El segundo procedure dime como es... si tienes un campo tipo INOUT en el procedure entonces si necesitas una consulta parametrizada como menciona u_goldman...

Si no tienes ningun paranetro tipo INOUT, entonces debes revisar nuevamente que estas pasando una cadena correcta, y ademas que el usuario que usaste para la conexion de la base de datos tenga permisos para UPDATE en la tabla.

Suerte!!
  #15 (permalink)  
Antiguo 06/05/2005, 13:22
Avatar de kotayk  
Fecha de Ingreso: marzo-2005
Mensajes: 35
Antigüedad: 19 años, 1 mes
Puntos: 0
Aunque no lo puedan creer ni uds ni yo nos dimos cuenta en el siguiente detalle.
No detectan ningun error en las siguientes 2 lineas que poste en mi mensaje anterior?

slq2 = "ActualizarPassword '" & user & "','" & new_pass & "'"
oConn.Execute (sql2)

slq2 no es lo mismo que sql2, nooooo? ayyyy por dios. Y bueno es viernes y ya me estoy retirando de mi trabajo.

De todas maneras les agradezco muchisimo porque mi mayor problema era el primero que postee. Gracias a uds ya se de aqui en adelante como trabajar con SP desde ASP.
Espero poder ayudarles a uds. en caso de que algun dia tengan alguna consulta.
  #16 (permalink)  
Antiguo 06/05/2005, 13:32
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
Bien !!!

Que bueno que te funciono, yo tampoco vi ese detalle, suerte entonces.
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 (incluyéndote)




La zona horaria es GMT -6. Ahora son las 23:30.